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.