first pass at unifying materials

Currently this only unifies parts of ResourcePage and ExternalActivity.
Also it was intended to provide a way for views to know if there 
were any assignable materials for the current user. This way the
text can be customized when there are no assignable materials.
That is useful in the Geniverse case where there is a default
material that isn't assigned and is automatically available to all 
classes.
fix failing test after by_user change
handle case of materials that don't' have is_official
better approach for checking for official support
ok I think I've got it this time