Allow port-only as a legal syntax for ExposedPort.parse(String)
Parser for PortBinding and Binding

This allows you to use textual port binding specifications in the format
used by the Docker CLI in docker-java:

StartContainerCmd.withPortBindings(PortBinding.parse("80:8080/tcp"));
Binding: Port and IP may be null

In Docker API, an undefined IP address is expressed as "".
This is not intuitive and should be hidden from the user.
Likewise, docker-java uses 0 for an unspecified port number.
This also is not intuitive, especially if you consider that 0 is a legal
port number.

This change makes the undefinedness explicit by using null in both
cases. When serializing, "" is used instead of null.
This implies changing the type of hostPort from int to Integer.
fixup Binding.toString