Write fee estimate and peers files only when initialized

Fixes #4669.

Move the loading of addresses to StartNode() to make it more
self-contained.
Reserve only one network specific cached path per session
Remove CBaseChainParams::NetworkID()
[Wallet] Watch-only fixes
SQUASHME: NetworkIdFromCommandLine() function instead of method
build: fix dynamic boost check when --with-boost= is used
build: fix qt test build when libprotobuf is in a non-standard path
rpc-tests: don't spew non-errors to stdout

There's a brief race here, the process might've already exited and cleaned up
after itself. If that's the case, reading from the pidfile will harmlessly
fail. Keep those quiet.
Merge pull request #5073

d5fd094 build: fix qt test build when libprotobuf is in a non-standard path (Cory Fields)
a7d1f03 build: fix dynamic boost check when --with-boost= is used (Cory Fields)
SQUASHME: fix "Reserve only one network specific cached path per session"
Merge pull request #4937

ccca27a [Wallet] Watch-only fixes (Cozz Lovan)
Typo in test
Merge pull request #5080

e21b2e0 Typo in test (Luke)
Merge pull request #5074

005b5af rpc-tests: don't spew non-errors to stdout (Cory Fields)
Merge pull request #4942

9406471 Write fee estimate and peers files only when initialized (Wladimir J. van der Laan)
Headers-first synchronization

Many changes:
* Do not use 'getblocks', but 'getheaders', and use it to build a headers tree.
* Blocks are fetched in parallel from all available outbound peers, using a
  limited moving window. When one peer stalls the movement of the window, it is
  disconnected.
* No more orphan blocks. At all. We only ever request a block for which we have
  verified the headers, and store it to disk immediately. This means that a
  disk-fill attack would require PoW.
* Require protocol version 31800 for every peer (released in december 2010).
* No more syncnode (we sync from everyone we can, though limited to 1 during
  initial *headers* sync).
* Introduce some extra named constants, comments and asserts.
RPC additions after headers-first
Remove CheckMinWork, as we always know all parent headers
Improve getheaders (sending) logging
Better logging of stalling