Fix note encryption for archived notes

Major refactors:
* Store the user's MasterKey within the ServiceBase so we can access it everywhere
* Refactor Service hierachy
* Add extension method for note decryption
Implement API to retrieve full archive of notes
Throw error if unknown note is requested
Add unit tests for NoteArchive