build: prepare to move DetectShutdownThread
build: split the non-gui startup routines into a new file

This will allow each to have its own main(), meaning that we can build a common
base client and simply link in the correct startup object to create the
appropriate binary.

Conflicts:
	src/init.cpp
	src/makefile.linux-mingw
	src/makefile.mingw
	src/makefile.osx
	src/makefile.unix
build: add global var for whether or not the gui is enabled
build: cosmetic: split usage string for easier formatting

Conflicts:
	src/init.cpp
build: use runtime setting for displaying the help message rather than QT_GUI define

Conflicts:
	src/init.cpp
build: use runtime setting for wallet rather than QT_GUI define
build: cosmetics after last commit
build: kill off the QT_GUI define
Get rid of db dependencies on main

Conflicts:
	src/db.cpp
	src/wallet.h
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

Conflicts:
	src/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.

Conflicts:
	src/main.cpp
	src/main.h
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.

Conflicts:
	src/main.cpp
	src/main.h
	src/qt/transactiondesc.cpp
	src/qt/transactionrecord.cpp
	src/rpcrawtransaction.cpp
	src/script.h
	src/test/transaction_tests.cpp