WIP: Much UI awesomeness

Fixes #89, #88, #85, #75, #73, #43, #41, #34.

@pdehaan r?
re: magic numbers... Not sure if `60 * 1000` is worth wrapping in a `var LOCATION_TIMEOUT_MS` near the top of the func for readability (or whatever, I didn't go to computer academy).