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