Redirect anon. users to login when they don't have permission

For permissions that allow anonymous users, if an anonymous user
doesn't have permission to access a resource, redirect the user to the
login page.

This is useful if a user logs out and later returns to a view that
allows anonymous as well as authenticated users. For example, anons
might have access to published articles but not unpublished ones.
Add test to ensure perm func is bypassed when appropriate
Pass only expected view args to perm functions

1. We no longer pass *all* view args to permissions that don't use a
model
2. We now pass view args to permissions that do use a model

In both cases, only args the permission function accepts are passed.