PaymentSession: Expose params and throw if transactions don't match requested params.

Resolves issue 551.
Wallet: add output shuffling (a second time - where did it go?!). It's optional for unit testing.
HD wallets alpha preview
HD wallets: add a Wallet.getKeyChainSeed method.
WalletTool: allow creation of a wallet from a given [word] seed.
HD Wallets: print seed birthday in wallet dump too
HD Wallets: bugfix, ensure we don't store private keys that can be rederived.
HD Wallets: add back design doc and todo list
HD Wallets: add getImportedKeys() method that returns just the basic key chain.
HD Wallets: add a REFUND key purpose and map it to the same branch as RECEIVE_FUNDS for now.
HD Wallets: support watching wallets in Wallet and wallet-tool.

Also, respect includePrivateKeys flag for the seed in wallet.toString again.
Use setMockClock instead of rollMockClock(0) to resolve flaky tests.
Fix a casting bug in WalletAppKit. Thanks to Kalpesh Parmar.
Switch TestWithWallet to be using an HD key by default.
Bugfix: copy event listeners to new HD chains when created.
Bugfix: don't crash if getEarliestKeyTime is called on a DKC that wasn't initialized with a seed (i.e. a watching chain)
Bugfix: don't throw away deserialized wallet in WalletAppKit
Bump wallet version and add missing check (!) to detect wallets from the future. The absence/incompleteness of this feature had not been noticed before, and it means that old apps will fail to read HD wallets due to the new key enum value rather than a more sensible error (but there's still no chance of an old app accepting an HD wallet, so it should still be safe).
ECKey: make compress/decompressPoint use non-deprecated methods and add a note that BC's tracking of compression state is going to go away.
WalletTool: add a lookahead flag that lets you control the lookahead size on the receive branch. Update help text to reflect the new flag and the seed flag as well.