[Story] DM Only Controls

# User Story

As DM, I have access to the campaign that others do not.

This includes:
- [x] The ability to remove tokens owned by others from maps
- [x] The ability to control and see through FoW on maps controlled by other players
- [x] The ability to stop players from moving other players to other maps
- ~~The ability to stop player from moving themselves around on maps~~

## Details

This might require a campaign settings window and new settings for campaigns

## Steps

- [x] Client Vuex `store`
  - [x] User has GM permissions 
    - [x] If permissions does not exist or there are no GM(s) then default to if campaign owner
  - [x] List of GM(s)
    - [x] Array/List
    - [x] If permissions does not exist or there are no GM(s) then default to campaign owner
  - [x] State value for each permission (Booleans)
    - [x] If permissions does not exist default to false
      - [x] Only GM can `Move All` Players from map to map
      - [x] Only GM can switch between maps as an individual
      - [x] Take control of all Fog
        - This will need to tested to see how it interacts if multiple GMs are using the fog at the same time.
      - [x] Take control of Grid Experience
  - [x] Action or mutation to initialize the store
    - [x] Will ~~add~~ assume the default values if something is missing
    - [x] Only user engaging the system will mutate their existing data
  - [x] Update `permissions` data action
  - [x] hasPermission
    - [x] Series of getter which will allow one call to find any permission need taking in all information
- [x] GMs can always
  - [x] Remove any token
    - [x] Small server permissions rework, [here](https://gitlab.com/mythicteam/mythictable/-/issues/535).
  - [x] Change who is a GM
  - [x] Remove player
    - [x] Small server permissions rework, [here](https://gitlab.com/mythicteam/mythictable/-/issues/535).
    - Can the campaign owner be removed - No
    - ~~If map owner is removed, what happens to maps?~~
      - ~~Remove all maps added by that player?~~
        - ~~This would require confirmation from user~~
      - Remove the player and reassign maps to campaign owner? No. They become ownerless.
- [x] Edit Permissions
  - [x] Feature Flag for access points
  - ~~Campaign Edit Modal (access point)~~
    - ~~Add a button to lower left for `Permissions`~~
    - ~~Handling for creating a new campaign vs editing current~~
  - [x] Campaign Edit Menu (access point)
    - [x] Add a button to jump straight to `Permissions`
    - Specifically this is referencing the in campaign menu flyout that allows campaign editing
  - [x] Modal (for `Permissions`)
    - [x] User Display
      - [x] All GMs
      - [x] All players (excluding GMs)
      - [x] Change `permissions`
        - [x] ~~Drag~~ Move user from one section to another
        - [x] ~~Select player to get option to remove them~~ Remove players with trash can icon
    - [x] On/off for each permission
    - ~~Apply~~
    - ~~Cancel~~
    - [x] Close
- [x] Server Data (We already have a Player object with which we are tracking player map movement)
  - [x] permissions (Object)
    - ~~gameMasters (Array/List of user ids)~~
    - [x] settings ~~customize~~ (Object)
      - [x] moveAll
        - [x] If true only GMs can `Move All` between maps
      - ~~moveFreeze~~
        - ~~If true only GMs can move freely between maps~~
      - [x] fogControl
        - [x] If true, GMs not map owners control fog on maps
      - [x] gridControl
  - [x] players
    - [x] isGameMaster

## Remaining Details

- Server Functions
  - Allow a delete request to be made based off of the campaign rather than the user making it
  - Needs to go through the Connection Hub
- Frontend Functions 
  - Connect the new Hub into the Live Play Director
  - Create a new delete function based off of the campaign routing
  - Add to Token and player delete from [here](https://gitlab.com/mythicteam/mythictable/-/merge_requests/519).

## Stretch Goals

- Indicate to GMs which features are only visible to them
  - List of things this would impact (please add if missed)
    - Fog of War
    - Grid Experience 
    - Map movement

## Acceptance Criteria (To be checked off **only** during Review)

This one has some interesting interactions, and your experience with them should be thoroughly summarized inside of Campaigns (upper left menu) > Game Master Controls.

To really get the full experience with what these are trying to do, I recommend using the incognito feature of your browser, creating a guest account and then inviting the guest account into your campaign on Edge. You can also do this with a different browser (ie: Chrome, Firefox, Safari, etc). Many of the features are reliant on multiple people, otherwise it (intentionally) won’t feel very different from what you could do before.

- [x] Assumes campaign owner is the GM
  - [x] Can change so the campaign owner does not have to be GM
  - [x] There is always at least one GM
- [x] Permissions
  - [x] Tokens
    - [x] GM can always delete a token on the map, even if they do not own it
    - [x] Owner can delete their token on the map
    - [x] No one else can delete the tokens
  - [x] Edit Maps
    - [x] Always present for GMs
    - [x] Always present for map owner
  - [x] Grid Control 
    - [x] Default to map owner, disabled permission
    - [x] Visible to GM(s), enabled permission
  - [x] Fog Control
    - [x] Default to map owner, disabled permission
    - [x] Visible to GM(s), enabled permission
  - [x] Move All players to selected map
    - [x] Default to map owner, disabled permission
    - [x] Either map owner or GM(s), enabled permission
- [x] Remove player from campaign
  - [x] Campaign owner cannot be removed
  - [x] Campaign owner should be able to remove players from campaign
  - [x] Removed player should not find campaign in their Campaign List
  - [x] Player session should end, rerouted to their Campaign List
  - [x] Player should be able to rejoin after receiving another invite
- Other?

Story points: 2.0