PeerGroup: print a log warn if there's no blockchain.
Correct the default thread used by AbstractBlockChain.addListener()
Refactor bloom filter calculations out of PeerGroup into a separate FilterMerger class.
Require PeerFilterProviders to expose a lock, and use them to avoid a race that occurs during Bloom filter construction.

It's possible in some uses to cause the Wallet to create two batches of keys one after the other, but independently such that the second batch of keys is derived (with HDWs) whilst the filter is being recalculated from the first. This in turn could race with filter calculation and cause asserts or miscalculated filters.
Add a simple API that lets you tag wallets with arbitrary string->byte[] pairs.
Update script JSON files with latest changes from Peter Todd.
Do tags lazily as was supposed to happen.
Tighten scope of the FileInputStream in WalletAppKit to avoid lock collisions on Windows. Resolves issue 556.
Fixes to tagging, thanks to Andreas for the review.

- Wallet now forces immediate autosave when a tag is set.
- TaggableObject javadocs s/wallet/object/
BloomFilter: set a lower bound on nHashFuncs of 1: there must always be at least one function. Thanks to Kalpesh Parmar for debugging this.

Static import Math for shorter more readable code.
Fixed comment for Wallet.sendCoins regarding MIN_NONDUST_OUTPUT.
Updated comment for WalletAppKit class to reflect deprecation of start and startAndWait in Guava.
Minor refactorings in VersionedChecksummedBytes.
Add Addy's main net DNS seed and remove Matt's testnet seed as it doesn't work properly.
issue 302: adding getter/setter for 'number of peers to discover', give copy of Address set to listener