Adds support for decoding and encoding data with missing value indicators.

As part of the a whole bunch of refactoring was also done.

* Added support for `none` string to indicate missing values for both
  Encode and Decode.
* Removed decode sources. Instead the only decode source is now a list
  of strings.
* Changed encode to encode to a list of strings.
* Changed decode to only decode a list of strings.
* Removed `Val`s.
* Removed `Cell` it wasn't used anywhere and depended on `Val`.
* Added documentation to Encode and Decode.
* Added tests for encode macro.

This closes #76.
I don't know if I'm being too picky here. Maybe I am. But the functionality for none doesn't have to be hard-coded into the base `Decode` type like this. The more canonical approach would be to create decode instances for optional which include the functionality in their internal logic, but don't leak it into the underlying framework.

This does mean the macro generated decoders would actually have to be macro generated functions from a source-specific configuration to a decoder.