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).
Adapter specific until plug gets a generic websocket something or another :haircut: