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.
But, if we're going to implicitly rely on this behavior of clean, I think we should seriously consider just applying that behavior everywhere, not relying on the user to pass that behavior in. Otherwise it's going to be pretty surprising to the users when the change the behavior of clean or change the splitter and decode starts failing.