Various cleanups:
* Replace SYSTEM_NAME and other macros with C++ constructs
* Remove RIPPLE_ARRAYSIZE and use std::extent or ranged for loops
* Remove old-style, unused offer crossing unit test
* Make STAmount::saFromRate free and remove default argument
Add ZeroCopyOutputStream and tidy up
Split peer connect logic to another class (RIPD-711):
All of the logic for establishing an outbound peer connection including
the initial HTTP handshake exchange is moved into a separate class. This
allows PeerImp to have a strong invariant: All PeerImp objects that exist
represent active peer connections that have already gone through the
handshake process.
Use ppa:afrank/boost 1.57 for Travis
Combine STTx::checkSign overloads:

Callers don't need to specify the signing key -- they're just retrieving
the key from the SerializedTransaction and then passing it back.

This simplifies Ed25519 implementation.
Fix unsynchronized access to Peer::write_queue_
Fix logic in HTTP/S server:

These bugs do not affect production code since callers do not invoke
`write` multiple times, but these would become a problem in the future.

* Access to Peer::write_queue_ is synchronized correctly.
* Remove unsafe access to deleted container element.
Make three ErrorCode functions generic.
Simplify LedgerData.cpp.
Add a comment to ledger/Ledger.h.
Change Output to be a generic std::function.
Wrap Output in a coroutine that periodically yields.
Better interoperation between Json::Value and JsonObject.
* Generic functions to add entries to both object models.
* Add Json::Value into JsonObjects.
* Write Json::Value to string incrementally.
* Get rid of ripple::RPC::New namespace
Allow the Ledger to generically output to both Json models.
New generic Ledger RPC handler.
Send output incrementally in ServerHandlerImp.
Refactor away RPCHandler::doRpcCommand
Refactor out a version of lookupLedger returning Status.
Configuration for yielding RPC server.