Major refactor

- Removed providers in favor of a simple list of patterns
- Split out ubuntu rewriting into a module, independent of caching
- Swapped back to caching whole responses to support offline mode