Fix access rights for analyses

Closes #147

This raises a RuntimeError if a person tries to access an Analysis they are not allowed to. This is for logging purposes.

This will also need to happen for Studies, but we don't have those pages yet.
Likely, especially since these sets are likely to share few entries (private and public are disjoint, and shared is likely very small by comparison).  A small test (which is not perfect, but meh):
```python
>>> from timeit import Timer
>>> as_set = Timer('3 not in set(range(1000) + range(1001,1020) + range(1021,1061))')
>>> as_list = Timer('3 not in range(1000) + range(1001,1020) + range(1021,1061)') 
>>> as_set.repeat()
[51.94052219390869, 50.028679847717285, 50.24499797821045]
>>> as_list.repeat()
[17.484385013580322, 18.724167108535767, 18.87842297554016]
```