There is the HTML5 Offline APIs for that. If you have an offline-capable web app, I think it should be possible for a tool like ManifoldJS to find out all of the assets it requires and package them into the app. Whether it actually does this, I don't know.
HTML5 Offline storage can be used without an app. Part of the issue is not the storage, but how to run the app in the background to pre-fetch the content. Here's a table showing the limited access that hosted apps have. Looks like they do have access to certain device storage APIs, as well as desktop notifications, microphone, etc. https://developer.mozilla.org/en-US/Apps/Build/App_permissio... Here's another page comparing "packaged" to "hosted" apps which seems to imply they are mutually exclusive - https://developer.mozilla.org/en-US/Marketplace/Options/Pack...