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 test for encode macro.
Adds default clean.
Removes superfluous imports from FieldsMacroSpec.
Fixes intermittent runtime exceptions in OptionDecode.

OptionDecode was using WeakTypeTag from the new scala refelction API. In
2.10 this is not thread safe and which can cause runtime
exceptions. Changed the method to use Manifest instead.
custom_partitions
Adding more partition functions
Formatting changes and removing string conversion
Fixing tuple