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.
Ah, I lost this comment thread, which was why I duplicated it below. Sorry  about that.

Hrmm ... clean may remove the whitespaces it you configure it to, that's true. (I wonder if the clean configuration should just be set to trim and removeNonPrintables for everything ... would we ever not want that?)

Symmetry is easy to gain back. Have a type encapsulating the pair of functions `String => Option[String]` and `Option[String] => String`. Which aren't quite isomorphisms but obey certain closely related rules.

The pair of functions feels a little less ad-hoc to me than a single hardcoded string. But, as you pointed out, clean will handle fixed length formats if it is configured to. So maybe the extra complexity is not necessary.