Currently the `getnetworkinfo` returns something like: 

```
"localservices": "0000000000000449",
```

Manually parsing this consistently gives me a headache (see also https://github.com/sipa/bitcoin-seeder/pull/77).

It would be useful to parse this and show the right combination of `NODE_NETWORK`, `NODE_GETUTXO`, `NODE_BLOOM`, `NODE_WITNESS`, `NODE_NETWORK_LIMITED` and `NODE_COMPACT_FILTERS`. In addition the help text for `getnetworkinfo` could be expanded to mention the right BIP numbers for known flags.

There is some ad hoc parsing to populate e.g. `localrelay`, etc (?).  Their help text could also refer back to `NODE_GETUTXO`.

See also: https://en.bitcoin.it/wiki/Protocol_documentation#Network_address
was_optional = true;
        } else {
            if (was_optional) ret += ") ";
            was_optional = false;
        }
        ret += arg.ToString( true);
    }
    if (was_optional) ret += " )";
    ret += "\n";
    
    ret += m_description;
    
    Sections sections;
    for (size_t i{0}; i < m_args.size(); ++i) {
        const auto& arg = m_args.at(i);
        if (i == 0) ret += "\nArguments:\n";
        
        sections.m_sections.emplace_back(std::to_string(i + 1) + ". " + arg.m_name, arg.ToDescriptionString());
        sections.m_max_pad = std::max(sections.m_max_pad, sections.m_sections.back().m_left.size());
        
        sections.Push(arg);
    }
    ret += sections.ToString();
    
    ret += m_results.ToDescriptionString();
    
    ret += m_examples.ToDescriptionString();
    return ret;
}
bool RPCArg::IsOptional() const