add `metered-mixin`

Records hits/misses on a cache. New functions:

* `hits` - how many cache hits
* `misses` - how many cache misses
* `accesses` - hits + misses
* `hit-ratio` - hits / accesses
major refactor, split into one file per cacher

* protocol.lisp - most of the generics
* one file for each cacher: function-cache, capacty, metering,
  hash-table, single-cell, thunk - instead of a cacher's
  implementation being scattered vertically down the file, they are
  grouped together.
* cache.lisp - misc other plumbing
* new global `*default-cache-class*` to configure the fallback case in
  making a cacher
Added some signals for when we insert into a cache and expire things form it re ADWolf:#1243 (2.5)
removed clear-cache method on metering as it would prevent the meters
from having useful data after any time we invalidate the cache

re ADWolf:#1244