[Qt] add more NULL pointer checks in bitcoingui

- add missing checks for clientModel and optionsModel
- small cleanups for an #ifdef on Mac
- remove an unneeded else

Rebased-from: e6beedc496093d98ba40500fd12bcb191c87bf6e
qt: Ignore showNormalIfMinimized in initialization or shutdown

Also get rid of ui_interface flag NOSHOWGUI. It's up to the GUI to
decide this.

Fixes #4360.

Rebased-from: 49d57125f953e3e909e5c61d42d66013df8d325e
VerifyDB progress
[Qt] ensure all class attributes are init to 0

- in BitcoinGUI and UnitDisplayStatusBarControl

Rebased-from: 8ca6a1617687ce613b0426c2627ba79e710a695f
[Qt] use BitcoinGUI::DEFAULT_WALLET constant in bitcoin.cpp

Rebased-from: 314fbd9ac7713e812e85960499474dcf453b563e
[Qt] disable tray interactions when client model set to 0

- this prevents the ability to fiddle around with the system tray when
  already shutting down (e.g. on slow shutdowns because of a proxy delay)
- extends solution for #4360

Rebased-from: b197bf3270490068319d87e4b977b08f754a1307
qt: Add null check in setClientModel(0)

Don't clear tray icon menu if it was never created.
Necessary precaution after #4649.
[Qt] fix slot connection problems when no wallet is loaded

- guard 4 connect calls by an #ifdef when no wallet is loaded to fix "No
  such slot" warnings
- also add comments when #ifdef ENABLE_WALLET end
- fixes #5175

Conflicts:
	src/qt/bitcoingui.h

Rebased-from: 981f7907c48580623125230aa5082f3d67f72633
Don't show wallet options in the preferences menu when running with -disablewallet

Rebased-from: d52f07260582f7b1ffef05953bcc821bcee8af61
rename fNoListen to fListen and move to net

- better code readability and it belongs to net
- this is a prerequisite for a pull to add -listen to the GUI

Rebased-from: 53a088154ce4e1fc483afa120a9063811dd0e7ea
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.

Conflicts:
	src/net.cpp

Rebased-from: 845c86d128fb97d55d125e63653def38729bd2ed
Qt: Add GUI view of peer information. #4133

Rebased-from: 65f78a111ff52c2212cc0a423662e7a41d1206dd
[Qt] style police and small addition in rpcconsole

- fix spaces, indentation and coding style glitches

Rebased-from: bbe1925ce3e627fd405d83e3c947e1f430a1d720
[Qt] Fix segfault when launched with -disablewallet

Rebased-from: 76fd7b8c2677dc145a67e86153d629b43d2a92e5
OMG: Update Translations