Update serialize comments to be doxygen compatible
The first thing that SelectParams does is call SelectBaseParams. Therefore, we do not need to call SelectBaseParams immediately prior to calling SelectParams.
Fix node ranges in the test framework.
gather_inputs: use correct variable in error message

"amount" and "fee" do not exist (anymore?).
Do not use third party services for IP detection.

This is a simplified re-do of closed pull #3088.

This patch eliminates the privacy and reliability problematic use
of centralized web services for discovering the node's addresses
for advertisement.

The Bitcoin protocol already allows your peers to tell you what
IP they think you have, but this data isn't trustworthy since
they could lie. So the challenge is using it without creating a
DOS vector.

To accomplish this we adopt an approach similar to the one used
by P2Pool: If we're announcing and don't have a better address
discovered (e.g. via UPNP) or configured we just announce to
each peer the address that peer told us. Since peers could
already replace, forge, or drop our address messages this cannot
create a new vulnerability... but if even one of our peers is
giving us a good address we'll eventually make a useful
advertisement.

We also may randomly use the peer-provided address for the
daily rebroadcast even if we otherwise have a seemingly routable
address, just in case we've been misconfigured (e.g. by UPNP).

To avoid privacy problems, we only do these things if discovery
is enabled.
Make comments in /src/script doxygen compatible
Do signature-s negation inside the tests

To avoid the need for libsecp256k1 to expose such functionality.
Merge pull request #5240

5e2dcae gather_inputs: use correct variable in error message (dexX7)
Merge pull request #5161

845c86d Do not use third party services for IP detection. (Gregory Maxwell)
Merge pull request #5256

f4e0aef Do signature-s negation inside the tests (Pieter Wuille)
travis: attempt to fix unlikely build issue

This is a long chain of errors, and there are likely other changes that could
be made to cope in other places along that chain.

If depends don't build successfully, don't bother trying again for the sake of
better logging. That's likely to hurt more than help. In this case, qt build
failed, and on the second attempt, it appeared to be successful. However, due
to a bad object from an internal gcc error on the first build, the resulting
lib was unusable. This caused bitcoin-qt to not be built, and tests and
packaging which expected bitcoin-qt to be there failed.

The root cause:
Mingw is especially crashy when using -jX, likely compounded by low-memory
environments. I've seen multiple problems with this combo in Gitian as well.

In this case:
i686-w64-mingw32-g++: internal compiler error: Killed (program cc1plus)
...
make[3]: *** [.obj/release/qdrawhelper.o] Error 4

The workaround:
Bump Travis down to using -j2 by default. Additionaly, enable --with-gui for
the windows builds. This will cause configure to fail if qt is not working
while also testing the config flag.

Other failures which may be worth revisiting separately:
- If a depends package fails, maybe remove the workdir so that it doesn't taint
  subsequent runs
- See if there's anything repeatable about the ICE when building qt
depends: cleanup better after qt and force a bump

qt needs to be rebuilt for travis. The previous commit should help ensure that
this won't need to be done again.
travis: temporarily disable the forknotify test

It appears to be breaking randomly on Windows
Merge pull request #5268

c8b115e travis: temporarily disable the forknotify test (Cory Fields)
1877390 depends: cleanup better after qt and force a bump (Cory Fields)
560e996 travis: attempt to fix unlikely build issue (Cory Fields)
Merge pull request #5203

0d91ae3 The first thing that SelectParams does is call SelectBaseParams. Therefore, we do not need to call SelectBaseParams immediately prior to calling SelectParams. (mruddy)
Merge pull request #5252

b9a36b1 Make comments in /src/script doxygen compatible (Michael Ford)
Merge pull request #5198

1c0aa91 Update serialize comments to be doxygen compatible (Michael Ford)
don't override dir() in qa rpc tests

Replace "dir" with "dirname" in util.py in qa/rpc-tests/ because "dir"
is the name of a function in python.
Optimize -regtest setgenerate block generation

Speed up generating blocks in regression test mode, by moving
block-creating and nonce-finding directly into the setgenerate
RPC call (instead of starting up a mining thread and waiting for
it to find a block).

This makes the forknotify RPC test three times quicker, for
example (10 seconds runtime instead of 30 seconds, assuming
the initial blockchain cache is already built).
script: create sane error return codes for script validation and remove logging

Attempt to codify the possible error statuses associated with script
validation. script/types.h has been created with the expectation that it will
be part of the public lib interface. The other flag enums will be moved here in
a future commit.

Logging has also been removed in order to drop the dependency on core.h. It can
be re-added to bitcoind as-needed. This makes script verification finally free
of application state and boost!