Make a mock instance user if needed

Fixes #1231

Previously instance user was only set if there was actually a logged in
user. However, instances define a default role that the public should
use.

`last_effective_instance_user` acts as the main gateway to site
features. In the case of a public user a dummy instance user is created
with the public role.