Rename ICredentialStore to ISettingsStore.

The ISettingsStore will be a more generic runtime settings store for
Phoebe. The SyncManager will store it's last run time in that as well.
Add sync LastRun persisting.

Added sync manager's last run timestamp to ISettingsStore for it to be
able to only download latest data.

Closes #5.
Add more error handling for user authentication.

It was possible to fail authentication and be stuck in a place where
IsAuthenticating was left on and nothing else was possible.
Add global messages into AuthManager lifecycle.

AuthManager now notifies everyone interested about current state.
Add automatic delayed commits of SQLiteModelStore.

Whenever there is a change in data, a commit is scheduled to take place
in 250ms. This means that Commit() function remains as a way to flush
all changes when it is absolutely required.
Add ModelsCommitedMessage.

The ModelsCommitedMessage should be sent by the IModelStore when the
Commit() function has commited all of the changed models into a
persisted storage. This is to let other components know that it is now
safe to assume all queries are now returning the latest data.
Automatically run sync after models commited.

After the ModelsCommitedMessage is received the SyncManager runs
automatic sync to push the latest changes to the server, if possible.
Change default sync mode to full sync.
Add authentication check to sync.

SyncManager will not attempt a synchronisation when the authentication
credentials aren't present.
Disable not used warning for subscription objects.

The current implementaiton of MessageBus returns a subscription object,
which needs to be retained. However, storing them without futher usage
makes the compiler to give a warning, which is fairly annoying.
Explicitly disabled that specific warning around the fields.