Add Linux script to limit outgoing bandwidth used by Bitcoin

This commit adds a Linux script that uses tc and iptables to
limit outgoing bandwidth to Bitcoin nodes. All tcp connections with
a source or destination port of 8333 are limited to the chosen rate.
It does not alter the incoming bandwidth. Additionally, outgoing
bandwidth to a host on a local LAN (defined by the LOCALNET variable)
is not limited.
Get rid of db dependencies on main
Moved PushGetBlocks to main.cpp to eliminate dependence of net.cpp on CBlockLocator.
Moved unrelated-to-network calls in StartNode and StopNode into init.cpp
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.
Created core.h/core.cpp, added to makefiles. Started moving core structures from main to core beginning with COutPoint.
Moved CInPoint to core. Removed GetMinFee from CTransaction and made it a regular function in main.
Removed AcceptToMemoryPool method from CTransaction. This method belongs to the mempool instance.

Removed AreInputsStandard from CTransaction, made it a regular function in main.
Moved CTransaction::GetOutputFor to CCoinsViewCache.

Moved GetLegacySigOpCount and GetP2SHSigOpCount out of CTransaction into regular functions in main.

Moved GetValueIn and HaveInputs from CTransaction into CCoinsViewCache.

Moved AllowFree, ClientCheckInputs, CheckInputs, UpdateCoins, and CheckTransaction out of CTransaction and into main.

Moved IsStandard and IsFinal out of CTransaction and put them in main as IsStandardTx and IsFinalTx. Moved GetValueOut out of CTransaction into main. Moved CTxIn, CTxOut, and CTransaction into core.

Added minimum fee parameter to CTxOut::IsDust() temporarily until CTransaction is moved to core.h so that CTxOut needn't know about CTransaction.
Moved CCoins, CTxOutCompressor, CTxInUndo, and CTxUndo to core.
Removed script.cpp's dependence on main.h
Moved UpdateTime out of CBlockHeader and moved CBlockHeader into core.
Using boost::signals2 to message main from net.cpp.
Removed the main.h include from net.cpp.
RPC: getblock(): Accept 2nd "verbose" parameter, similar to getrawtransaction, but defaulting to 1 for backward compatibility
Merge pull request #2154 from CodeShark/dependencycleanup

Clean up code dependencies
Wallet: store key creation time. Calculate whole-wallet birthday.

This also encapsulate wallet-read state information into CWalletScanState.
Wallet: optimize rescan to skip blocks prior to birthday
Merge pull request #2747 from luke-jr/getblock_verbose0

Add verbose flag to getblock RPC so it is possible to get hex dumps of blocks
Merge pull request #2728 from runeksvendsen/master

Add Linux script to contrib/ that limits outgoing bandwidth to Bitcoin nodes
changes to thread code (directly use boost::thread)

- removes our NewThread() function an replaces remaining calls with
  boost::thread with our TraceThread template
- remove ExitThread() function
- fix THREAD_PRIORITY_ABOVE_NORMAL for non Windows OSes