Simplify the WalletTool command line and move help to an external file.
WalletTool: bit more cleanup.
Wallet: log exceptions during save.
Quick hack to try and reduce memory consumption for Androids.

Takes a test wallet from around 11.3mb to 9.6mb
Script: intern commonly used chunks.
Threading: experiment with limiting the user/event thread to 100 pending closures.
Memory optimisations to avoid OOM when the user thread falls behind.

- Remove needless recalculations of the Bloom filter on any wallet change, instead of just when keys/scripts are added. This may fix one of the privacy leak issues too.
- Run fast catchup/filter recalculations on the dedicated PeerGroup thread instead of abusing the user thread. Resolves a TODO.
- Replace the user thread SingleThreadedExecutor with a custom class that blocks the submitting thread and logs a warning if the queue is saturated, to avoid building up a backlog of closures.
More memory optimisations.

Run the wallet txConfidenceListener on the calling thread. Move tx broadcast that occurs inside setTransactionBroadcaster outside the wallet lock to avoid inverting on the mempool class (via PeerGroup, but that doesn't lock on the broadcast path).

This makes memory usage smoother by avoiding the creation of tons of closures and spamming the event thread with them.
Fix an edge case bug I just introduced a few minutes ago with the txConfidenceListener changes, and document.
Wallet: Short-circuit runnable creation if executor is SAME_THREAD
Lower the priority of the networking thread to avoid competing with UI threads.
Threading: prefer OOM to deadlock when the user thread is saturated, but keep the warning.
WalletAppKit: Allow subclasses to fiddle with some more stuff.

This isn't really a stable or supportable API, but bitcoinj does not have a stable API, so live and let live.
BlockingClient: some fixes for Orchid
BIP-0039 multiple version support.
Prevent memory blowup on orphan storage
When throwing InsufficientMoneyException, the amount of satoshis missing is required. When the server requests too much value, it is stored so that implementations of the client has access to it.
Adding support for processing PaymentRequests.
Allow Bitcoin URI's that don't have any address component if the r= payment protocol param is there.
Payment protocol: Make PaymentSession use a global thread pool that uses daemon threads.

Fixes a 60 second hang that could occur in wallet-tool once the send request was processed. Fixing this revealed another bug - WalletTool was depending on this VM shutdown delay caused by the worker pool timeout, so clean up the code and replace with a blocking get of the future.

Also support the --offline and --password flags when using the payment protocol.