Permissions update

Old access level mechanism was not very elegant. This replaces how permissions are handled with a more extensible method of handling permissions. Also provides a method to manually assign someone permissions without worrying about house positions.

Database changes:
- New table `office_permissions`
- New table `user_permissions`
- Will remove `access_level` from `offices`
I think it's a little cleaner to have `tool['name']` and `tool['link']`. That way you don't need that comment, since the code is clearer. Any reason to change it like this?