Merge squashed couch_replicator history

Unfortunately this brings in a decent amount of code with no history due
to a snafu when Cloudant pulled couch_replicator into its own repositor.
Use couch_replicator prefix everywhere
Remove #changes_args.db_open_options
Define LOWEST_SEQ
Remove unnecessary includes and search paths
Add mp_parse to _utils instead of importing from couch
Add json_stream_parse module

It's not used outside of couch_replicator, so keep it here for now
We're not using dynamic modules
Tolerate JSON_ENCODE returning an iolist
Parse replication doc inside replicator

This is to ensure that gethostname is run on the node running
the replication, as it becomes part of the replication id
Support either atom or binary type for deleted field in changes

This was changed in couchdb recently and either format needs to be handled
for the time being.
Refactor couch_replicator_httpc_pool to monitor processes that have requested workers

The caller pids are now monitored and mapped to the workers they receive using
an ets table in the gen_server state. When caller processes go down the workers
are reclaimed.

BugzID: 14132
remove io:format
Do a better job of breaking the race

BugzID: 13405
Do not block supervisor for replicator init

This prevents the replication supervisor rom backing up under load and
and causing all sorts of other problems

BugzID: 13405
Use latest=true when retrieving revisions

This allows the replicator to keep up with revisions that may have
occured after missing_revs was called.

BugzID: 14241
Better propagation of errors when replication fails

Fix twig call in handle_terminate. Detect and handle db_not_found error when
source is missing and propagate to calling node

BugxID: 14273
Notify replication manager when replication is shutdown

BugzID: 14273
Rework monitor funs so they're symmetrical

Also, accept a Client tuple directly to simplify the API a bit.

BugzID: 14132
Fix column widths