Refactor the analytics client so it's testable

There are some artefacts of the automatic report setting that will be
implemented next
Use NSubstitute for new tests
Don't record device infos automatically
Refactor some more
Fix the logic here
Store the user when authenticating
Fix the build
Add the report setting to the settings flyout
Rephrase that
Send the crash report immediately in the CrashViewModel if allowed
Tell the user if the message has been sent automatically
Ignore the email in the analytics client if it's set to null or empty
Add a bunch of unit tests
Fix the return value
Add some more docs
Merge pull request #44 from flagbug/less-shadyness

Be less shady about analytics and crash records