**Describe the issue**
In the latest version (22.2.2.1) clickhouse-client ignores `port` parameter from config file.
 
**How to reproduce**
Create `config.xml` with arbitrary value for `port` parameter. 
```
<config>
    <port>9001</port>
</config>
```

Run `clickhouse-client` with custom config file
```
# clickhouse-client --log-level trace -c config.xml
Processing configuration file 'config.xml'.
ClickHouse client version 22.2.2.1.
Connecting to localhost:9000 as user default.
Connecting. Database: (not specified). User: default. Uncompressed
Code: 210. DB::NetException: Connection refused (localhost:9000). (NETWORK_ERROR)

Uninitializing subsystem: Logging Subsystem
```

The output indicates that it's used default port value (9000) instead of the value from config file (9001). 

{
    
    options_description.main_description->add_options()
        ("config,c", po::value<std::string>(), "config-file path (another shorthand)")
        ("secure,s", "Use TLS connection")
        ("user,u", po::value<std::string>()->default_value("default"), "user")
        /** If "--password [value]" is used but the value is omitted, the bad argument exception will be thrown.
            * implicit_value is used to avoid this exception (to allow user to type just "--password")
            * Since currently boost provides no way to check if a value has been set implicitly for an option,
            * the "\n" is used to distinguish this case because there is hardly a chance a user would use "\n"
            * as the password.
            */
        ("password", po::value<std::string>()->implicit_value("\n", ""), "password")
        ("ask-password", "ask-password")
        ("quota_key", po::value<std::string>(), "A string to differentiate quotas when the user have keyed quotas configured on server")
        ("testmode,T", "enable test hints in comments")
        ("max_client_network_bandwidth", po::value<int>(), "the maximum speed of data exchange over the network for the client in bytes per second.")
        ("compression", po::value<bool>(), "enable or disable compression")
        ("query-fuzzer-runs", po::value<int>()->default_value(0), "After executing every SELECT query, do random mutations in it and run again specified number of times. This is used for testing to discover unexpected corner cases.")
        ("interleave-queries-file", po::value<std::vector<std::string>>()->multitoken(),
            "file path with queries to execute before every file from 'queries-file'; multiple files can be specified (--queries-file file1 file2...); this is needed to enable more aggressive fuzzing of newly added tests (see 'query-fuzzer-runs' option)")
        ("opentelemetry-traceparent", po::value<std::string>(), "OpenTelemetry traceparent header as described by W3C Trace Context recommendation")
        ("opentelemetry-tracestate", po::value<std::string>(), "OpenTelemetry tracestate header as described by W3C Trace Context recommendation")
        ("no-warnings", "disable warnings when client connects to server")
    ;