Hide coroutines in a compilation unit.

* Works with Boost 1.55 and up.
* Respond to review comments.
Write Json::Value using the incremental Json writer.
Allow the Ledger to generically write to either Json model.
Fix JsonWriter narrowing conversion error
Extract LedgerToJson.h