Include hasTouch when calculating tablet, mobile detection

# Problem
When using bowser it reports IE on Windows Tablet PC version or Media Center PC version as tablets since it has the word tablet in their user agent strings.

# Solution
Combine that check with whether the device has a touch screen.

# Testing
- Tests added
- Tests should all pass
Now we can mock the bowser info by new DeviceInfo.constructor(fakeWindow, fakeBowser). yay.