improve wallet load time by removing duplicated calls to EC_KEY_check_key and adding a hash for vchPubKey/vchPrivKey entries in wallet.dat

backwards compatible with previous wallet.dat format

Conflicts:
	src/key.h
verify vchPubKey matches calculated public key unless fSkipCheck is set

Conflicts:
	src/key.cpp
comment explaining new wallet format for key/wkey entries
Added locks on the setpwalletRegistered functions in main.cpp and added an UnregisterAllWallets function.

Conflicts:
	src/main.cpp
Calling UnregisterAllWallets() instead of UnregisterWallet(pwalletMain) in init.cpp

Conflicts:
	src/main.h
Removed net.cpp's dependency on init.h.

Added explicit include of main.h in init.cpp, changed include of init.h to include of main.h in net.cpp.

Added function registration for net.cpp in init.cpp's network initialization.

Removed protocol.cpp's dependency on main.h.

TODO: Remove main.h include in net.cpp.

Conflicts:
	src/init.cpp
Using boost::signals2 to message main from net.cpp.

Conflicts:
	src/init.cpp
	src/main.h
Do not treat fFromMe transaction differently when broadcasting

Conflicts:
	src/main.cpp
Remove broken PrintWallet functionality

Conflicts:
	src/wallet.cpp
Remove IsFromMe() check in CTxMemPool::accept()

Fixes issue #2178 : attacker could penny-flood with invalid-signature
transactions to deduce which addresses belonged to your node.

I'm committing this early for code review; I still need to write up
a test plan.

Executive summary of fix: check all transactions received from the network
for penny-flood rate-limiting before adding to the memory pool. But do NOT
ratelimit transactions added to the memory pool:
  - because of blockchain reorgs
  - stored in the wallet and added at startup
  - sent from the GUI or one of the send* RPC commands (CWallet::CommitTransaction)

The limit-free-transactions code really should be a method on CNode, with
counters per-peer. But that is a bigger change for another day.

Conflicts:
	src/main.cpp
	src/main.h
	src/rpcrawtransaction.cpp
remove unused function IsFromMe
Use boost signals for callbacks from main to wallet

Conflicts:
	src/main.cpp
	src/main.h
	src/rpcrawtransaction.cpp
	src/wallet.cpp
	src/wallet.h
Add a notfound message to getdata that is sent if any transactions that aren't in the relayable set are requested.

Conflicts:
	src/main.cpp
Process getdata invs separately until send buffer overflows

There exists a per-message-processed send buffer overflow protection,
where processing is halted when the send buffer is larger than the
allowed maximum.

This protection does not apply to individual items, however, and
getdata has the potential for causing large amounts of data to be
sent. In case several hundreds of blocks are requested in one getdata,
the send buffer can easily grow 50 megabytes above the send buffer
limit.

This commit breaks up the processing of getdata requests, remembering
them inside a CNode when too many are requested at once.

Conflicts:
	src/main.cpp
net.cpp: Do not change primary process name from (default) to "bitcoin-start"

Discussed a bit on IRC.

Conflicts:
	src/net.cpp
process received messages one at a time without sleeping between messages

Conflicts:
	src/main.cpp
o Annotated lock-like functions in net.h.
o Removed unused function EndMessageAbortIfEmpty
move AreInputsStandard out of CTransaction