WIP: Adding support for address strings and other improvements

*This pull request is work in progress.*

An attempt to normalise function naming (#199) and allow creation of sockets using address strings.

There's several new classes:
- `AddressFactory` used to get the appropriate instance of `AddressInterface` by using the `create($address)` method.
- `RemoteAddressInterface` any address that has a host/ip and optionally a port, most functionality is in `RemoteAddressTrait`, it is implemented by `TcpAddress` and `UdpAddress`.
- `UnixAddressInterface` is implemented by `UnixAddress`.

The sockets API has been updated to use the above:
- `Socket\Server::listen($address)` instead of `listen($port, $address)` now accepts either an address string or an already created `AddressInterface`, 
- `Socket\Server::getAddress()` used to fetch the internal `AddressInterface`.
- `SocketClient\Connector::create($address)` which operates as `listen($address)` does above.

The DNS API has also been updated:
- `Query\Executor::query($nameserver, $queryData, $name)` now accepts either a string or an already created `RemoteAddressInterface` as its first parameter.
- `Resolver\Factory::create[Cached]($nameserver, $loop)` now accepts either a string or an already created `RemoteAddressInterface` as its first parameter.

The HTTP client API has been updated:
- `AddressFactory` for spawning implementations of `HttpAddressInterface`.
- `HttpAddress` for taking a `https?://...` string and turning it into a `tcp://...` address complete with the correct port, also has an `isSecure()` method that returns true if the address should use SSL/TLS.

Things still to be done:
- Change `Socket\Connection` to be in line with these changes.
- Anything else, be sure to let me know.

This work affects:
- #136 As it implements the same/similar functionality.
- #287 and #239 both tough on similar areas of code.