Support for stackable caching policies, and two new policy shims

This commit implements support for stacking caching policies by
concatenating policy names.

A policy stack includes zero or more non-terminal policies, or
shims, followed by exactly one terminal policy which actually
maintains the cache-to-origin block mappings.  This commit also
includes two non-terminal policies ("shims").

The first shim, era+, adds an era number to every cache block
that gets updated on write hits, and an interface that allows an
application to read and increment the current era value, and to
invalidate cache blocks that have been written to before or after
a given era.  This functionality can be used to partially
invalidate the cache contents to restore cache coherency after a
snapshot rollback.

The second shim, trc+, adds function-call-level tracing to the
policy stack.  By default, an INFO-level log message including
function name and parameter will be generated whenever most
of the cache policy interface functions are called.  An
interface to increase or decrease the verbosity of the trace
output is also provided.
whitespace