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 
`math.signum(v)`