Fix IsInitialBlockDownload which was broken by headers first.
MOVEONLY: Move void UpdateTime() from pow.o to miner.o (plus fix include main.h -> chain.h)
CBlockIndex::GetBlockWork() + GetProofIncrement(nBits) -> GetBlockProof(CBlockIndex)
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.
[Wallet] Reduce minTxFee for transaction creation to 1000 satoshis
Avoid a bunch of copying/conversion in script/sign
bitcoin-tx: Add the "-txid" option. Also add the hex-encoded transaction to the JSON output as the "hex" property.
Fix node ranges in the test framework.
Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true.
Make sure that GetRandomBytes never fails

We're using GetRandomBytes in several contexts where it's either
unwieldy to return an error, or an error would mean a fatal exception
anyhow.

@gmaxwell checked OpenSSL a while ago and discovered that it never
actually fails, but it can't hurt to be a bit paranoid here.
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.
Merge pull request #5210

1f84793 Avoid a bunch of copying/conversion in script/sign (Pieter Wuille)
Adding license.
Adding const.
Make comments in /src/script doxygen compatible
Merge pull request #5249

38c62ae Adding const. (sinetek)
Do signature-s negation inside the tests

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

65e3a1e Make sure that GetRandomBytes never fails (Wladimir J. van der Laan)