HD Wallets: let you specify the creation time for a WatchingKey

If the creation time for a WatchingKey is known, it should be taken into
account and stored.

Signed-off-by: Harald Hoyer <harald@harald-hoyer.de>
Add some Javadocs and clean up the watching key API a tiny bit. Default creation time is now BIP32 standardisation time.
HD Wallets: add a threshold for the DeterministicKey lookahead

DeterministicKeyChain.maybeLookAhead() would pre-generate a new key, for
every issued key, even if it is only one. If we replay the blockchain
and update the issuedKeys counter, maybeLookAhead() would trigger the
regeneration and resending of the bloom filter for every used key.

This patch adds a threshold, where keys are only pre-generated after
more keys are needed than the value of the threshold.

Signed-off-by: Harald Hoyer <harald@harald-hoyer.de>
HD Wallets: mark the DeterministicKeys as issued, if seen in a Transaction

If a Transaction contains a DeterministicKey of our
DeterministicKeyChains, then we should mark this key as issued. This can
happen, when we replay/resync the blockchain or when another device uses
one of our keys.

Signed-off-by: Harald Hoyer <harald@harald-hoyer.de>
Fix bugs and misc review comments from Harold Hoyer's key lookahead pull request. Still needed: unit tests.
Wrap coin-ish BigIntegers into Coin class.
Refactor internal coin representation from BigInteger to long.
Move coin related methods and constants from Utils into Coin.
Clean up Coin API for multiplications and divisions.
Remove weird constructors.
Remove weird value accessors.
Rename Coin.toNanoCoin(String) to Coin.parseCoin(String).
Rename Coin.toNanoCoins(coins, cents) to Coin.valueOf(coins, cents).
Clean up coin constants and make more use of it.