[WIP] Unify controller and integration tests

This pull request is for the following project: https://github.com/rails/gsoc2014/wiki/Ideas#unify-controller-and-integration-tests
In order to set the `flash`, we actually have to manipulate the controller directly. However, we lose access to the controller instance before a request has been served in Integration tests. The access to the instance after the request has been served is obtained through `env['action_controller.instance']` which is being set in the `dispatch` method. The only solution I could find to set the flash manually was to override `dispatch` in `AC::Metal` which is the only place we have access to controller's instance before the action has been processed.

As for dropping the parameter, I'm couldn't find a good reason for us to allow users to set the `flash` manually during the request since they can just do it in the controller's action. While allowing the users to manipulate the `request` has created enough issues, allowing them to manipulate the `controller`'s instance directly will just take us further away from our goal of making controller tests equivalent to integration tests.