Request Settings data on opening modal

to counter different browser windows having different settings
including plugins' main template (='name of the plugin'.jinja2, e.g. cura.jinja2) to index.jinja2
Small optimization
Merge branch 'mrbeam-devel' into devel
Merge branch 'updateSettingsModal' of https://github.com/Booli/OctoPrint into Booli-updateSettingsModal
Merge branch 'Booli-updateSettingsModal' into devel
Allow to fetch whole tree from the settings merged with the defaults
Support for a new type of API key

In order to solve the initial handshake problem with apps, OctoPrint now supports so called app session keys which are basically API keys with a limited validity. Obtaining those keys is based on a handshake procedure backed by RSA signatures. OctoPrint needs to be aware of apps and their associated public keys (with the AppPlugin there exists a mechanism to add additional recognized apps by installing a plugin). Apps perform the handshake by first requesting a temporary key with very limited validity, then sending a message back to OctoPrint containing their id, version, the temporary key and a signature created with their private key over these three pieces of data. OctoPrint then tries to verify the signature and if successful unlocks the key to be used as a fully recognized API key.
Send 401 Unauthorized instead of 403 Forbidden upon failed app session verification
Properly recognize app session keys everywhere. Also fixed a bug where the ApiUser was not properly provisioned with his roles.
Do not deliver API key on settings API unless user has admin rights.
Updating the settings now fires a new event "SettingsUpdated"
Documentation and changelog entries updated
Fixed a merge error that caused duplicated code and missing auto migration of reverse proxy settings
Also protect resources from blueprint plugins with the api key (unless the plugin specifies otherwise)
Only bind additional view models from plugins if they specify a target to bind to
Added an additional constant for the plugin base url for blueprint plugins
On reconnect to server, check if the version changed and if so hard-reload the UI
Initialize logging before plugin manager, otherwise the logging output of the latter will not be visible
Wait at least 5s before reloading the UI