Refactor router

This branch contains the following improvements

* Improves docs
* Uses plug route parsing
* Optimizes named helpers
* Refactors the code around a Route struct and remove ResourceContext (as all functionality already exists in ScopeContext)
* Clean up the test suite by removing duplicated tests and allowing them to be async

This is still WIP and requires Elixir 1.0 (that's why the build fails).
Hahaha, I have never seen this emoji before. You are correct. What I meant here was not the websocket stuff per se, but that we are injecting user code specific to the adapter, and that seems a bad idea (because once you change the adapter, the code would then break). This stuff should be better abstracted.