Extend TCP URL bind syntax to allow control of ephemeral port selection algorithm and range.

This is the first time I've done this on github!

In this patch, I've modified both the zsocket and zsock code to allow tcp:// URLs to accept some new
syntax, to control the range of ports that will be involved in ephemeral ports, and also to allow different
algorithms to select a port in the given range. Without using the new syntax, the existing defaults apply:
ports in C000 to FFFF; algorithm is the normal "find first open port".

In the port notation, you can use the exclamation point instead of asterisk to select a random port in the range. 

You can override the C000-FFFF by following the '*' or '!' with "[<low port>-<high port>]"

Example:  "tcp://127.0.0.1:*[20500-30100]"
                  "tcp://*:![51000-55000]"
                  "tcp://*:!"   // use random port assignment in range 49152-65535 (c000 to ffff)

MYSTERY:
 In the diffs shown below, I do not recall making any changes to zauth.txt, zhash.txt, zinterface.txt,
yet, there they are... perhaps an artifact of the time delay between my fork and current state?