ISPN-2281 Extend metadata support to internal cache entry structure

* This will enable for server endpoints that add extra metadata
(REST, Memcached) to pass in their entire metadata object to the
internal cache entry structure.
* Remove GetCacheEntryCommand and leave GetKeyValueCommand with
a flag to decide whether to return entry or value. This keeps
visitor small, making it easier for interceptor implementors.
* Remove VersionedPutKeyValueCommand and instead have
PutKeyValueCommand take metadata information which contains version.
* Removed all Versioned*Entry classes and replaced them with
classes that take metadata.
* Original cache entry classes (that take no metadata or version)
have been left in order to keep memory consumption to minimum
when neither version nor custom metadata are stored.
ISPN-2281 Convert REST server to store data passing in MIME information

* Created REST MimeMetadata class implementing Metadata to pass in
content type information.
* Added putAsync(K, V, Metadata).
* Remove lifespanTimeUnit and maxIdleTimeUnit from Metadata interface
which are not really used. Metadata implementers should provide
lifespan/maxIdle times in milliseconds.
* Fixed bug where Metadata*Entry instances were not correctly
determined when using a custom Metadata implementation. Added tests
for it too.
* Make all Metadata*Entry instances return the metadata in their cache
value, and not null.
* Remove unused key equivalence check in Hot Rod server.
ISPN-2281 Memcached server to pass flags and version via Metadata

* Added MemcachedMetadata to ship flags and version information.
* Added replace(K, V, Metadata) operation and added tests.
* Fixed bug where ReplaceCommand was not using valueEquivalence to
compare old and new value.
* Created ByteArrayCacheTest to exercise cache operations when
storing byte array key/value instances.
* Added externalizers for all metadata classes.