Decouple CChain from mapBlockIndex
Move CBlockIndex, CChain and related code out of main
CMessageHeader sanity changes

- Remove spurious `pchCommand[1] = 1` in CMessageHeader()
- Make sure that pchCommand is zero-padded if length is shorter than
  COMMAND_SIZE
- Use strnlen to determine length of pcmCommand in GetCommand
Do merkle root and txid duplicates check simultaneously

Move the txid duplicates check into BuildMerkleTree, where it can be done
much more efficiently (without needing to build a full txid set to detect
duplicates).

The previous version (using the std::set<uint256> to detect duplicates) was
also slightly too weak. A block mined with actual duplicate transactions
(which is invalid, due to the inputs of the duplicated transactions being
seen as double spends) would trigger the duplicates logic, resulting in the
block not being stored on disk, and rerequested. This change fixes that by
only triggering in the case of duplicated transactions that can actually
result in an identical merkle root.
Apply clang-format on crypto/* and compat/*
SanitizeString: allow '(' and ')'

'(' and ')' are valid in user agent strings, so should be reported
as such in RPC `getpeerinfo`.

Fixes #4537.
minor variable init changes in init.cpp

- explicit init of pcoinsdbview and pwalletMain (even if not needed, as
  globals are init to NULL, it seems cleaner)
- remove check if (pwalletMain) in Shutdown() as delete is valid even if
  pwalletMain is NULL
depends: add the debug/release concept to depends
depends: add debug/release flags for linux/osx/win

Linux and mingw enable libstdc++ debugging for extra runtime checks. OSX
doesn't play nice, so don't enable it there.
depends: make sure openssl sees cppflags
depends: boost: build for debug or release as requested

Also hook up cppflags there, which was missing before.
depends: teach qt to honor debug/release

This means it also needs to honor our flags, so patch them in as necessary.
depends: give miniupnpc cppflags
depends: make LDFLAGS act like the other flags
depends: add docs for debug
depends: disable reduced exports for debug builds

Some debug options may not be compatible.
tests: don't split an empty string
script: don't read past the end
travis: use debug for one build

For the all-off build, enable the wallet and debug. This ensures that debug
options will catch wallet problems as well.

In order to make sure the no-wallet path is still tested, disable the wallet
in the other x86_64 build.
qt: add proxy to options overridden if necessary.

If proxy is disabled in the gui but enabled via the command line, it needs to
be added to the override list.