Add ability to totally disable simulation cache

Even things that have `cache=True` will not return cached results
(though they will store them). The inverse is not true: enabling
the cache turns caching on only for things with `cache=True`.

New functions:

- `sim.disable_cache()` turns caching off
- `sim.enable_cache()` turns caching on
- `sim.cache_on()` reports whether caching is currently on (True) or off (False)