HotPath: A memory constrained cache for HotPath or critical files. These
files should be served out of memory instead of from disk for performance
reasons.

Options:

- maximum: The maximum amount of memory we can allocate for our given
hotpath cache.
- available: The amount of memory available on the system. We will calculate
our hotpath cache size based on this. It should be given as bytes.
- prefix: A prefix for the keys to prevent dictionary attacks when storing
things like `__proto__` in the object.

@constructor
@param {Object} options Configuration for HotPath.
@api public
function HotPath(options) {
  if (!this) return new HotPath(options);

  options = options || {};

  this.maximum = bytes(options.maximum || HotPath.maximum); // Max memory available.
  this.free = this.ram(options.available);                  // Free mem we can use.
  this.prefix = options.prefix || '_HotPath';               // Prefix for keys.
  this.countkey = options.key || false;                     // Include key length.
  this.storage = Object.create(null);                       // Empty object.
  this.allocated = 0;                                       // size of mem used.
}