Added better support for CanCan#accessible_by

Added an `action` optional argument to AuthorizationAdapter#scope_collection.
The controller passes in the action that is currently being performed so
that authorization adapters can correctly scope collections based on
different controller actions.

Also implemented it on the `CanCanAdapter` so that we offer full support
of the accessible_by functionality.
Only call AuthorizationAdapter#scope_collection for collection.

This commit ensures that #scope_collection is only used to retrieve the
collection, not when finding a single resource. The issue was that
resources may be scoped out which result in an
ActiveRecord::RecordNotFound when it should result in a authorization
exception.
Merge pull request #2131 from gregbell/cancan-better-accessible_by-support

Added better support for CanCan#accessible_by