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 
The idea of BinnedSplitter is to preserve the type but just reduce the cardinality, so that it can reuse an existing underlying Splitter. I like the generality of that approach.=