Principal Refactor and Voting

This pull request covers 2 things - the refactoring of the principal and the ability to vote on suggestions.

- Principal now made a 1st class citizen.  It will __always__ be passed to the views but if the user is not logged in the user property will be empty.  This makes it more consistent across views.
- Refactored code to be less `user`, `principal` and `maybeUser` when in fact it was always all about the principal
- __You can now vote on suggestions__.  Still not sure how the notes bit works in a consistent manner but you cna now vote.  Currently doesn't affect anything but hey its a start.