Add PWA support
I've documented all of the worker stuff inside the ~/serviceWorker.ts
It works the same as the previous implementation except for /media/*
routes, they are cached differently and their cache does not expire. Also we're now caching API calls to all instances except for only our.
The update prompt has moved to ~/modules/serviceWorker.ts
Fixes #1721 (closed), #1634 (closed)