NEW Provide a consistent way of triggering flush

Provides an interface for classes to implement their own flush()
functionality which are called early in a request 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.