Per-peer block download tracking and stalled download detection.

Keep track of which block is being requested (and to be requested) from
each peer, and limit the number of blocks in-flight per peer. In addition,
detect stalled downloads, and disconnect if they persist for too long.

This means blocks are never requested twice, and should eliminate duplicate
downloads during synchronization.
always show syncnode in getpeerinfo (fixes #2717)
Display progress of rescan.
Add progress to initial display of latest block downloaded.
convert tabs to whitespace in bitrpc.py

This is a minor change to bitrpc.py to conform with the formatting of
the other python source code in the repo.
move wallet info stuff to "getwalletinfo" rpc (left original wallet
stuff in getinfo call for backwards compatibility)

add wallet transaction count to getwalletinfo rpc call
Fix typo in doc/build-unix.md regarding building without UPnP
replace custom GetFilesize() with boost::filesystem::file_size()
[Qt] show number of in/out connections in debug console
update bash-completion for v0.9

Recognize completable arguments of new and expanded commands.
Now that bitcoin-cli(1) exists, add completion for it as well.
Total money limit test

Added bounds check by @il--ya.

Updated-by: Wladimir van der Laan <laanwj@gmail.com>
Log which wallet is used during init

Now that the wallet can be selected using -wallet it is important
to log which wallet is being used for later troubleshooting.
Slightly tweak error when unable to bind port

A slight improvement over 2d2d8fae3d8bc4e82dc631d93c6e19f954bbee04 -- we don't know that it's the daemon, it could be the GUI.
Update the list of threads to the current state.
Merge pull request #3805

8a6894c Log which wallet is used during init (Wladimir J. van der Laan)
Merge pull request #3768

fecba4e Total money limit test (Pieter Wuille)
AddToWallet implies BindWallet

Now that AddToWallet is called when loading transactions from the
wallet database, BindWallet can be integrated into that and does not
need to be an extra step.

Leaves behaviour unchanged, but makes the
fFromLoadWallet/!fFromLoadWallet paths in AddToWallet a bit more
symmetric.
Merge pull request #3796

16bfd68 update bash-completion for v0.9 (Christian von Roques)
Remove unused includes of boost lexical_cast

We don't use lexical_cast anywhere, no need to include it.
MainNet is the special case for the GUI