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.
All these tests test `decode(encode(something))`. Essentially we are testing that "encode" and "decode _on the  image of encoded data under encode_" are isomorphisms. That is good as far as it goes, but we care about being able to decode _all_ encoded data, not just the subset of encoded data that you get when encoding a value.

This is where the idea for the `decode(arbitraryEncodedData) == decode(encode(decode(arbitraryEncodedData)))` property comes in. Maybe there are other ways of doing it too.

I don't actually suspect we have any bugs here, so this could be reasonably left for later.