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.
This only passes because `Some(noneVal)` is never tested ... I think? We still can't get around the fact that an isomorphism between `Option[String]` and `String` is impossible with the way our source data is defined. This  property should check for the possibility that `v` is `Some(noneVal)`. And we should explicitly check the behavior of `decode(encode(Some(noneVal)))` with a normal unit test.