Add cache mode concept and elaborate a bit on caching.

This should fix these issues partially:
* https://github.com/slightlyoff/ServiceWorker/issues/398
* https://github.com/slightlyoff/ServiceWorker/issues/412