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