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`
The `session['username'] == username` is only useful when we're dealing with something specific like editing your own profile. The idea was that things that need their own custom methods of handling permissions can handle it themselves, while everything else should just check if the permission is in the user's session.