Add before_* and after_* to controllers and routers

Hello everyone, this pull request:

  * [x] Move to latest Plug (allow us to get rid of some code!)
  * [x] Deprecate assign_status and assign_layout in favor of put_status and put_layout
  * [x] Allow controllers to be used in Plug stacks, for example, `plug UserController, :show`
  * [x] Improve controller docs
  * [x] Add `before_action/2` and `after_action/2` with support to guards to filter by action/controller
  * [ ] Add `before_match`, `before_dispatch` and `after_dispatch` to the router
Agree. Let's move to Controller