Write fee estimate and peers files only when initialized

Fixes #4669.

Move the loading of addresses to StartNode() to make it more
self-contained.
[Wallet] Watch-only fixes
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)
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)
script: move CScriptID to standard.h and add a ctor for creating them from CScripts

This allows for a reversal of the current behavior.

This:
CScript foo;
CScriptID bar(foo.GetID());

Becomes:
CScript foo;
CScriptID bar(foo);

This way, CScript is no longer dependent on CScriptID or Hash();
script: remove all uses of CScript::GetID()
script: remove CScriptID::GetID()
script: add base class for serializing core structures for scripts
script: use CScriptBinaryData for all core structures that are added to scripts
script: remove old methods of writing core structures
script: move ToString and ValueString out of the header
script: add a slew of includes all around before removing some from script.h

Lots of files ended up with indirect includes from script.h.
script: drop core includes

The string processing headers are sticking around for now, we may drop them
later.