extend core proxy options and handling

- rework the proxy handling in init to cover more cases and work more
  thoroughly
- add -proxy6 to allow setting a separate SOCKS5 proxy to reach peers via
  IPv6
- rework proxy data-structures to allow recognition of the default proxy
  (-proxy) to give users the ability to see, which proxy (IPv6 / Tor) is
  derived from the default proxy and which was explicitly set
- extend RPC call getnetwork info

Most proxy-setup is now done using the new ``ProxyInit()`` function.

``ProxyInit(Network net, const std::string& strArg, int nSocksVersion, bool fIsDefault)`` parameter description:
``net`` = network to setup proxy for (NET_IPV4, NET_IPV6 or NET_TOR)
``strArg`` = command-line argument to get values from (-proxy, -proxy6 or -onion)
``nSocksVersion`` = SOCKS version of the proxy
``fIsDefault`` = is that proxy the default proxy (true) or a separate proxy (false)?

``ProxyInit(Network net, const std::string& strArg, int nSocksVersion, bool fIsDefault)`` does the following:
-pre-check, if ``net`` is not limited and -no{proxy/proxy6/tor} was NOT specified
--pre-check passed: try to ``SetProxy()`` and return ``false`` on error
---pre-check passed: only for ``net == NET_TOR`` call ``SetReachable();``
---pre-check passed: return ``true``
--pre-check failed: for default proxy (``fIsDefault == true``) a failed pre-check is okay, return ``true``, otherwise ``false``

default proxy = ``-proxy``
separate IPv6 proxy = ``-proxy6``
separate Tor proxy = ``-onion``

Proxy initialisation flow (happens via ``ProxyInit()``, just the name proxy is special cased in the code):
-try to setup default IPv4 proxy
--if SOCKS4:
---try to setup separate Tor proxy, on failure disable Tor via ``SetLimited()`` (SOCKS4 = no Tor support)
---try to setup separate IPv6 proxy, on failure disable IPv6 via ``SetLimited()`` (SOCKS4 = no IPv6 support)
--if SOCKS5
---try to setup separate Tor proxy, on failure try to setup Tor proxy via default proxy
---try to setup separate IPv6 proxy, on failure try to setup IPv6 proxy via default proxy
---try to setup default SOCKS5 name proxy

Errors initialising default proxy or Tor/IPv6 proxies via default proxy lead to exit!
This would be better as a sub-object 'proxy' that contains the "ipv4", "ipv6" and "onion" fields.