Logger support for early exit and debug logging

* Debug logging level

* Early exit before formatting log messages, so that debug messages
  don't cost much

* Setting to make progress logging optional
Exception type with convenient message formatting
endswith() string utility function
Make TransformState use double precision

This allows large offsets to the data origin to be represented
accurately and conveniently on the CPU side.
Utility for drawing semitransparent spheres

This will be useful for representing a "brush" to select points with