Mostly Fixes#893
A couple methods cache callbacks, and will require a larger refactor to fully denodeify.
Specifically, our methods involving web3 requests to sign a tx, sign a message, and approve or cancel either of those.
I think we should postpone those until the TxManager refactor, since it will likely handle this response caching itself.
At least, the portion of it that we use.
Moved salting within the encryptor, so it does not need to be managed externally.
KeyringController now caches the password instead of a passwordDerivedKey, since it is ignorant of the salt.
Encryptor payload is now in a JSON format, so its portions are both base64 encoded *and* labeled appropriately. The format is `{ "data": "0x0", "iv": "0x0", "salt": "string" }`.
Fixes#843Fixes#859
When displaying seed words, we were not using a callback, which had some race condition potential. This is simply a little cleaner and more correct.
Fixes#842
Ropsten links will still not work until Etherscan publishes their ropsten link format.
At that time we will need to update ui/lib/account-link.js
Otherwise, fixes#831
Fixes#791
It was possible for two requests to have the same ID, causing a crash and loss of StreamProvider connection.
This new id generation strategy creates a random ID, and increments it for each request.
In case the id generator is included from two different processes, I'm initializing the counter at a random number, and rolling it over a large number when it gets too big.