feat: add error type for config parsing
feat: add error type for config parsing

When the user runs the program, they will have the ability to modify a
configuration file that will set up the way modules in the prompt look
and behave. In order to get something like `background = "blue"` to
work, we must have a way to parse user input into types the program
can actually work with -- in this case, `ansi_term::Color::Blue`.

At the same time, we want an ergonomic way to tell other parts of the
program when an error is encountered while parsing the user's
input. Nightly Rust has the `TryFrom` trait, which is what our
conversion implementation is based off of, but we cannot `impl` traits
on structs defined outside of our crate (and `TryFrom` is still
unstable). Therefore, we define a `ConvertError` (and several
sub-variants) to convey when a conversion fails, and we create methods
for taking in an input, usually a string, and outputting either a
`ConvertError` or the successfully-converted type.

refactor: distinguish between different kinds of TryFrom errors

refactor: compress TryFromError into a single enum

refactor: make ConvertError return type-specific description

docs: explain why the 'try_from' methods exist

Afulton11/contrail