add BinnedSplitter, and a simple floating point binner to use with it

(Also includes some cruft from re-formatting docs)

This makes the default Double splitter be a standard BinarySplitter but wrapped in a binner which converts to a very low-bit floating point representation to limit the number of unique values.

cc @snoble 
(Long,Long,Long) takes, what, 10 or 15x as much memory as Double? :)