NEW Provide a consistent way of triggering flush

Provides an interface for classes to implement their own flush()
functionality. This function gets called early in a request on
all implementations of Flushable when flush=1|all is requested in the
URL
    
This fix came out of an issue where Requirements combined files were not
being cleaned up after dev/build?flush=1, due to the fact that flush
would only occur when you called it while on a page that used those
combined files, but not in any other contexts. This will now call flush
on any implementors of Flushable regardless of the context of where
flush was called.

In the case of `SSViewer::__construct()` doing a `Security::permissionFailure()`
if flush was requested but you don't have permission, I don't think that's needed
anymore. I tried putting the site in test mode and trying to flush, it still asks
to login even without the security check done there.

We also flush the cache in *any* case when `TestRunner::use_test_manifest()`
is called. I don't see any reason why you wouldn't want to flush the cache when
running tests.

Not flushing seems dangerous. We even print this out if flush isn't passed to the test harness:

    WARNING: Manifest not flushed. Add flush=1 as an argument to discover new classes or files.

Partly it's a problem because passing flush to a regular request won't flush the test manifests, so you have to remember when you last passed flush=1 to the test harness. There are better fixes (like clearing all manifests on any flush, or changing ClassManifest to build the test manifest as a delta on top of the regular manifest), but they're harder.

@chillu Do you have numbers to confirm the 1s -> 15s change?