SHAMapStore with online delete

@JoelKatz @nbougalis 

Here's a more detailed description of this effort:

    SHAMapStore: Online Delete
    Makes rippled configurable to support deletion of all data in its key-value
    store (nodestore) and ledger and transaction SQLite databases based on
    validated ledger sequence number. All records from a specified ledger
    and forward shall remain available in the key-value store and SQLite, and
    all data prior to that specific ledger may be deleted.
    
    Additionally, the administrator may require that an RPC command be
    executed to enable deletion. This is to align data deletion with local
    policy.

@mtrippled Its common during development and during the code review process for APIs not part of the code in question to change. For example, everything here from "Add streambuf::allocator_type" to "Fix leak and use allocator in headers" represent API changes to unrelated classes:
https://github.com/vinniefalco/rippled/commits/client

You talked about "adding things to the pull request that have nothing to do with its scope." I must respectfully disagree. Changing deficient APIs in unrelated code is very well inside the scope of any work. I'm not suggesting we hold the pull request up but Howard's suggestion is a good one and addresses my objection to the current interface of `DatabaseCon::lock`.