Add get_random_tcp_uri(addr) function.

Add `get_available_port(interface_addr='*')` function
Add get_available_ports and get_random_tcp_uris

Add `get_available_ports` and `get_random_tcp_uris` functions to return
a list of the specified number of distinct TCP uris, each with a unique
(and currently unused) port number.  This is necessary in the case where
`get_random_tcp_uri` must be called before binding to the previously
returned URI.  Otherwise, it is possible that the same port will be
returned twice, which would lead to errors about the port already being
in use.
Modify get_available_ports to use preferred ports

Modify the `get_available_ports` function to allow the user to specify a
list of preferred ports to try first.  The optional list can be
specified by creating a file at the location
`~/.zmq_helpers/preferred_ports.txt` where each line is a number
corresponding to a port.  The ports are considered in the order they are
listed.  If a port in the list is not available, the next port is
checked.  If the file doesn't exist, is empty, or if there are not
enough ports listed in the file which are available, random available
ports are used.  In the case where no preferred ports file exists, the
behaviour matches the behaviour before this commit.