Refactor Settings routing and mobile interactions

Closes #3254, closes #3138, closes #3245
 
### Settings Routing and View refactoring
- Refactored `SettingsView` to handle transitions between mobile and desktop layouts
- `SettingsRoute` will only transition to `settings.general` if the screen is large enough to show both the menu and the content
- Added `SettingsIndexView` to handle showing the settings menu on mobile screens
- Added `SettingsContentBaseView` to be inherited by any settings view that is not index.
- Updated Settings templates appropriately to work with new views

### Mobile Utils
- Added `matchesMediaQuery` function
- Removed unused `hasTouchScreen`, `device.js` should be used instead.
- Removed unused `smallScreen` function
@PaulAdamDavis I honestly have no idea what this code was doing, as the buttons are broken for me anyways. Weren't you working on a PR with those? Can this code die, or do I need to reimplement it? I didn't notice any changes after commenting it out