Performance optimization for bloom filters.

This reduces a peer's ability to attack network resources by
 using a full bloom filter, but without reducing the usability
 of bloom filters.  It sets a default match everything filter
 for peers and it generalizes a prior optimization to
 cover more cases.
Merge pull request #2913 from gavinandresen/checkpoint_250k

Checkpoint at block 250,000
Add MurmurHash3() unit test

Useful as a source of test vectors to anyone re-implementing bloom
filters.
Squashed 'src/leveldb/' changes from a02ddf9..be1b0ff

be1b0ff On Mac OS X fsync does not guarantee write to disk. Use fcntl F_FULLFSYNC instead.

git-subtree-dir: src/leveldb
git-subtree-split: be1b0ff1fcd6ad820a7fd111ac671fb51cc68001
Merge leveldb subtree change.

* On Mac OS X fsync does not guarantee write to disk. Use fcntl F_FULLFSYNC instead.
Merge pull request #2916 from sipa/leveldb-osxfsync

Import OSX fsync change from LevelDB subtree
Merge pull request #2914 from gmaxwell/bloom_faster

Performance optimization for bloom filters.
Merge pull request #2915 from petertodd/murmurhash-tests

Add MurmurHash3() unit test
Update the bloom state on the real object, not the temporary one.

This resulted in just passing all transactions to filtered wallets
which worked surprisingly well, except where it didn't.
Merge pull request #2919 from gmaxwell/bloom_faster

Update the bloom state on the real object, not the temporary one.
Reject dust amounts during validation

Replaces the validation check for "amount == 0" with an isDust check,
so very small output amounts are caught before the wallet
is unlocked, a transaction is created, etc.
GetDataDir(): cache paths for each network separately
Refactor: CAddressBookData for mapAddressBook

Straight refactor, so mapAddressBook stores a CAddressBookData
(which just contains a std::string) instead of a std::string.

Preparation for payment protocol work, which will add the notion
of refund addresses to the address book.
Refactor: Move GetAccountAddresses to CWallet
update SelectParamsFromCommandLine() handling/order

- move SelectParamsFromCommandLine() from init.cpp to bitcoin.cpp to allow
  to use TestNet() for Bitcoin-Qt instead of GetBoolArg("-testnet", false)
- change order in bitcoind.cpp to match bitcoin.cpp functionality
- hamonize error message strings for missing datadir and failing
  SelectParamsFromCommandLine() in bitcoin.cpp and bitcoind.cpp
- use TestNet() call in splashscreen.cpp
Rework when payment server is started
Route qDebug() messages to debug.log
Payment Protocol: X509-validated payment requests

Add support for a Payment Protocol to Bitcoin-Qt.

Payment messages are protocol-buffer encoded and communicated over
http(s), so this adds a dependency on the Google protocol buffer
library, and requires Qt with OpenSSL support.