Display password hint on the third incorrect login attempt
Fix store 'unlocking' successfully if no encryption keys were synced

If encryption keys had not been synced, the local_store.Store.unlock()
call would succeed, but listing items would then fail.

Return an error instead so that the unlock screen
is not hidden.
Remove unnecessary continueTests() calls.

Use addAsyncTest()'s handing of returned promises
instead of explicit continueTests() calls.
Fix missing message when password decryption fails

Make key_agent.DecryptionError extend
err_util.BaseError so that it has the same
message property as other errors.