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
The PR I was working on was just more hacky jQuery stuff you're looking to replace (I imagine).