Add Optional Asset Caching for Seekable Streams
The problem with serving assets (and raw resources and anything that is not a file) is that the resulting stream is non-seekable, which hampers compatibility with clients that assume seekability.
A quasi-workaround for this is to copy the asset to a cache file, then serve the stream from the file. For assets in particular, this should not introduce new security issues, as the asset itself is world-readable, and a properly-located cached copy as a file would be private.
So, add an XML attribute to indicate that "caching mode" should be enabled. With this enabled, we would copy the asset and serve it. The cached copy would be in a cwac-provider/ subdirectory inside getCacheDir(), unless overridden in Java. The copy-the-asset logic would be lazy (on the fly as assets are requested), unless something is done in Java to pre-copy those assets.