Rework the Json serialization code

- clarify how a transcoder works, align methods
- Have only a few transcoders, use Guice binder to bind for different types
- clarify IdTranscoder, use standard valueOf method to instantiate
- remove all the static code serializations
- remove most direct ObjectMapper uses, use transcoders everywhere
- remove SingularityJsonObject, move helpers into JsonHelpers
- add general SingularityTranscoderException instead of
  SingularityJsonException (it would be great if that were a checked
  exception or a subclass of IOException but the amount of code
  changes required for that is so painful that we need to let that go
  for now).