localize globals to each App instance

- globals were more efficient, though this is less cheesy (even though it's immutable data)
adds offline support (basic appcache) + koa middleware

- refactored App a bit