Initial import

This is my first push of code to GitHub, made as a pull request for easier review
See my previous comment in the `fetchAndCache()` method. Right now, the `Promise` returned by `fetchAndCache()` will only reject if there's a network error preventing communication, not if there's an error response returned.

So in this current implementation, if a HTTP 4xx/5xx is returned for `request`, you'd pass that back to the controlled page. It would be more useful if, instead, the code attempted to return a valid response from the cache in that case.