Merge Unstable branch with Master

The unstable branch should now be stable enough to function in the master branch (assuming you're not doing anything on-device). 

This update add functioning preferences into the app, and adds significant scaffolding to future work on the events manager (which will happen in the unstable branch until it has stabilized). Some minor UI tweaks have also been included.