Add option to pass a proc for redirect actions

redirect_on_impersonate and redirect_on_revert can now also accept a
proc instead of string, this allows for more complex evaluation or to
better mimic the sign_in process when impersonating a user
on revert_impersonate, sign_out_user if user and staff models are different

When two different models for users and staff are used, the user should
be explicitly logged out when reverting the impersonating, just signing
in the admin doesn't work in certain scenarios.
this should be current_user not current_staff in the notice