Performance improvements for TaggedCache and KeyCache

Create a new Beast class, `beast::hashed_key` which wraps around a key type, and adds support for hash caching and optimizes key comparisons by comparing hashes before performing (potentially expensive) comparisons of the underlying keys. 

Use code in `ripple::TaggedCache` and `ripple::KeyCache` to move the hashing outside of locks and reduce the number of times hash functions must, actually, be called.

(Also, pardon the noise in the project files - they include changes from the earlier RocksDB commits)

I think we're ok here with size_t. To be used in the unordered containers, the hash functor is required to return a size_t.  The result_type on HashAlgorithm is meant to support HashAlgorithms such as SHA-256, should we want to maybe someday migrate our SHA-256 implementation into the hash_append infrastructure, just for the purpose of creating a SHA-256 result from something more complicated than an array<unsigned char, N>.