[WIP] Appcache

Offline version.
Tips:
- Manage cache in Chrome: chrome://appcache-internals/
General remark for this service:

I assume: the `scope` passed into service functions are used only to `$broadcast` state changes. Why not inject $rootScope into the service and use that instead? This would heavily reduce the scope function parameters used throughout this service.

If my assumption is wrong, please ignore.