Implementing an LRU cache for Etag validation, created `this.etag()` for standard Etag generation, fixed `this.write()` Etag response

Minor change to Etags

Minor changes
Implementing a cache invalidation strategy by extending `this.register()` with an optional `Boolean` to trigger `this.stale()`, created `this.stale()` to invalidate cache in on disk
Updating `this.stale()` & `this.request()`, changing how `compressed` probe will fire with a local asset
Returning a block of code that should've been in last commit
Flipping an erroneous boolean, rolling back version
Tracking `Content-Type` header value in `LRU` so `304` responses will be correct (updated relevant methods)
Created `this.unregister()` to invalidate LRU for proxy responses based on cache instructions and when a `fs.stat()` error occurs on a watched file

Small change
Updating `LRU` interaction from `this.proxy()` to respect `Cache-Control` & `Expires` headers
Fixing `this.handler()` by adding essential condition to a conditional statement, removed nested `this.stale()` execution from `this.unregister()` & returned it to `this.request()`
Merge pull request #130 from avoidwork/edge

Major refactoring, API change