WIP rough non-working sketch of pretty-print

see TODO comments in source.
wip: provide untested pretty printers for set and map
remove unnecessary local variable
This seems to work and passes a simple test
trade space for time when printing indentation

Also:
- rename Depth to PrettyPrintContext.
- Drop the idea of making basic indent configurable.
    (Two spaces ought to be enough for anyone.)
Provide a simple pretty-printer for edn data

Use:
- Printers.prettyProtocolBuilder()
- Printers.prettyPrinterProtocol()

Indentation is fixed at two spaces per level of indentation. Each value
in a list or set begins on a new line. Each key/value pair in a map
begins on a new line. Key and value are separated by a space.

{
  [
    "this list"
    "is a key"
  ] #{
    "This set"
    "is the"
    "corresponding"
    "value"
  }
}

The changes are intended to be backward compatible with the release
0.4.3, though this required some trickery with a ThreadLocal under
the covers. I'm considering searching for a nicer design that would
break backward compatibility for 0.5.0.

--
Merge branch 'feature/pp' into develop

* feature/pp:
  trade space for time when printing indentation
  This seems to work and passes a simple test
  remove unnecessary local variable
  wip: provide untested pretty printers for set and map
  WIP rough non-working sketch of pretty-print