Factor out role switcharoo to instance method

Since there's a mutual foreign key requirement of roles to instance, in order to create the relationship properly the following must happen:
1) A dummy role with no instance must exist.
2) The instance must be saved with the dummy role.
3) The dummy role must be replaced by a regular role with instance set.

This now happens closer to the model layer.
Add support for non-logged in user CSV exports

fixes #1384 on github