[Qt] add messages when handling local payment request files

- important for the open URI dialog to give users feedback
  when a file is invalid etc.
Don't create empty transactions when reading corrupted wallet

The current transaction loading code is not exception safe.
An exception during deserialization causes an empty transaction
to be left behind in the wallet.

Fix this by building the transaction separately and adding
it only to the wallet at the end.

Fixes #3333.
qt: Prevent non-functional GUI from popping up during Init

When a InitError or InitWarning happens, the
GUI pops up but is unusable (until Init finishes).

This is caused by showNormalIfMinimized. Add a message
flag to skip this call for Init errors or warnings.
Use mutex pointer instead of name for AssertLockHeld

This makes it useable for non-global locks such as the wallet and
keystore locks.
Document cs_wallet lock and add AssertLockHeld

Add locking assertions to wallet to all methods that
access internal fields and do not aquire the cs_wallet mutex.
LoadWallet: acquire cs_wallet mutex before clearing setKeyPool

Make the function mutex-aware, to prevent having to lock cs_wallet
at the call site in Init.
Allow `-noserver` with bitcoind

Allow running bitcoind without server.

- Default to -server mode (of course) for bitcoind with SoftSetBoolArg
- Remove fForceServer argument from AppInit2
- Move fDaemon to a static variable in bitcoind
Win32: use a more modern API call in FileCommit()

- this seems to be a more recent API call and also supports e.g. SMB3,
  ReFS, which is not guaranteed for commit_()
- link to MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364439%28v=vs.85%29.aspx
extend std::exception logging in txdb.cpp
Explicitly ensure that wallet is unlocked in `importprivkey`

This makes for a more useful error reply (fixes #957).
Merge pull request #3427

1ad2636 qt: Prevent non-functional GUI from popping up during Init (Wladimir J. van der Laan)
Merge pull request #3457

d78f35a Explicitly ensure that wallet is unlocked in `importprivkey` (Wladimir J. van der Laan)
Merge pull request #3453

96e5f61 extend std::exception logging in txdb.cpp (Philip Kaufmann)
Changed Get64(.) to GetLow64()

The function Get64(.) has a bug in case the width is not divisible by 64.
Since it is only ever used as Get64(0) this simply changes it to this
special case. Additionally, an assert is added, and a cast to prevent
a compiler error.
Unittests for uint256.h

Unit tests for uint256.h. The file uint160_tests.cpp is no longer
needed. The ad-hoc tests which were in uint256.h are also no longer
needed. The new tests achieve 100% coverage.
Update debian/
"getnetworkhashps" with defaults was yielding "0", the hashrate is not 0.

This was broken in 4c6d41b8b653ef90639b1a32f6aab0bb1cef90c5.
ui: Better tab order in send coins entry

Pressing <tab> after entering a label now brings the focus to the
address entry, instead of the row of buttons. In my experience this
is more useful, as I usually want to paste an address after
entering the label.

The buttons are mostly useless anyway:

- Choosing a previously used address should be discouraged

- When I'm already using the keyboard the 'paste address' button is
useless - just use the Ctrl-V. Maybe it would be an idea to remove it
completely

- I usually don't want to remove the entry I'm typing now! So makes
sense to have it at the end of the tab chain.
Added new DNS seed from bitcoinstats.com.
Merge pull request #3481 from cdecker/bitcoinstats_seed

Added new DNS seed from bitcoinstats.com.