Сryptocurrency development analysis

# What was the problem?

`config.json` did not support domain names for seed nodes.

### How did I fix it?

When the node launches, it preprocesses the peer list from the config file and resolves any domain names into IP addresses before creating the relevant peer objects.

This approach was chosen because the node currently relies on IP addresses in order to uniquely identify peers. To allow a peer to have both an IP address AND a domain name would have complicated things; it’s easier to resolve all domains during node startup.

I cherry-picked the commits of @fchavant from https://github.com/LiskHQ/lisk/pull/2322 so we can probably close that other PR.

### How to test it?

— In the peer list in the relevant configuration file, change the ip addresses from `` to the string `localhost`; then run integration tests.
— Run the node locally using `localhost` instead of `` as the IP address of a peer in the config file; the node should run without errors.

### Review checklist

* The PR solves #2320
* All new code is covered with unit tests
* All new code was formatted with Prettier
* Linting passes
* Tests pass
* Commit messages follow the [commit guidelines](CONTRIBUTING.md#git-commit-messages)
* Documentation has been added/updated

You can view, comment on, or merge this pull request online at:


— Commit Summary —

* Add support for providing domain names as peer IP addresses in config files
* Add support for peer domain names in integration tests
* Use seed nodes DNS names for betanet
* Use seed nodes DNS names for mainnet
* Use seed nodes DNS names for testnet

— File Changes —

M app.js (67)
M config/betanet/config.json (10)
M config/mainnet/config.json (20)
M config/testnet/config.json (10)
M test/common/application.js (42)

— Patch Links —