Major refactoring, API change

- Implementing an LRU cache for Etag validation
- Created `this.etag()` for standard Etag generation
- Fixed `this.write()` Etag response
- Created `this.register()` & `this.unregister()` for simple cache management
- Created `this.stale()` to handle stale cached items
- Fixing `this.proxy()` to respect `Cache-Control` & `Expires` headers