Using Bitcoin Core v0.15.1

I have just set `onlynet=onion` in my `bitcoin.conf` file and have the following in my logs after node restart:

    2018-02-03 12:40:52 receive version message: /Satoshi:0.15.1/: version 70015, blocks=507429, us={IPv4}:{port), peer=0
    2018-02-03 12:41:15 receive version message: /Satoshi:0.14.2/: version 70015, blocks=507429, us={IPv4}:{port), peer=2
    2018-02-03 12:41:22 receive version message: /Satoshi:0.14.2/: version 70015, blocks=507429, us={IPv4}:{port), peer=3
    2018-02-03 12:41:28 receive version message: /Satoshi:0.15.0/: version 70015, blocks=507429, us={IPv4}:{port), peer=4
    2018-02-03 12:41:57 receive version message: /Satoshi:0.15.99/: version 70015, blocks=526679, us={IPv4}:{port), peer=5
    ...
    2018-02-03 12:44:11 receive version message: /Satoshi:0.15.1/: version 70015, blocks=507429, us=[::]:0, peer=6

The peer 6 was an onion.

My `bitcoin.conf` file is as follows:

    uacomment={redacted}
    prune=10239
    banscore=10
    bantime=31536000
    maxmempool=900
    mempoolexpiry=2160
    proxy=127.0.0.1:9050
    listen=1
    bind=127.0.0.1
    onlynet=onion

All the `Used for reaching peers via` tick boxes are still ticked but disabled when I look in Options>Newtork.

Bitcoin Core should not initiate IPv4 (or IPv6) connections when `onlynet=onion`.  These connections should not be seed nodes due to low addresses:

    2018-02-03 12:40:30 Loaded 66198 addresses from peers.dat  254ms

I get some IPv4 version messages each time I restart the node.

Note: added both `dns=0` and `dnsseed=0` at the same time and this *seems* to resolve the issue with limited testing. These entries should not be necessary to limit IPv4 outgoing connect.

If people need to setup Tor for testing, the setup I have used is here on [Bitcoin.SE](https://bitcoin.stackexchange.com/a/70070/75001)
return false;
    }
     Either install a handler to notify us when genesis activates, or set fHaveGenesis directly.
     No locking, as this happens before any background thread is started.
    boost::signals2::connection block_notify_genesis_wait_connection;
    if (WITH_LOCK(chainman.GetMutex(), return chainman.ActiveChain().Tip() == nullptr)) {
        block_notify_genesis_wait_connection = uiInterface.NotifyBlockTip_connect(std::bind(BlockNotifyGenesisWait, std::placeholders::_2));
    } else {
        fHaveGenesis = true;
    }
#if HAVE_SYSTEM
    const std::string block_notify = args.GetArg("-blocknotify", "");
    if (!block_notify.empty()) {
        uiInterface.NotifyBlockTip_connect([block_notify](SynchronizationState sync_state, const CBlockIndex* pBlockIndex) {
            if (sync_state != SynchronizationState::POST_INIT || !pBlockIndex) return;
            std::string command = block_notify;
            ReplaceAll(command, "%s", pBlockIndex->GetBlockHash().GetHex());
            std::thread t(runCommand, command);
            t.detach(); 
        });
    }
#endif
    std::vector<fs::path> vImportFiles;
    for (const std::string& strFile : args.GetArgs("-loadblock")) {
        vImportFiles.push_back(fs::PathFromString(strFile));
    }
    chainman.m_load_block = std::thread(&util::TraceThread, "loadblk", [=, &chainman, &args] {
        ThreadImport(chainman, vImportFiles, args, ShouldPersistMempool(args) ? MempoolPath(args) : fs::path{});
    });
     Wait for genesis block to be processed