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.
Exactly. So the tests should be changed to reflect that. At the moment the test should fail. If it doesn't fail, it's only because it's not hitting the failing case.

And there should be another test that `decode(encode(Some(noneVal))) == None`, perhaps including a comment that we regard this as a limitation, but whether the behavior is ideal or not, it is nonetheless currently part of the specification of our function.