Add more fine-grained user agent detection.

- Add userAgentType() that returns either desktop, mobile, tablet, or app.
- IsMobile() now uses userAgentType() to detect the user agent.
Add mobile settings to utility/rack and strip non-headers out of the display.
Use the X-UA-Device-Force cookie to force a device override.
Change the parameter name on profile/nomobile and add some doc comments.
Merge pull request #2100 from vanilla/feature/ua-device-app

Improved mobile device detection support.