Allow --port range for random port selection

This way the tracker listens on a new random port each time `horde` is called.  This allows Horde to be integrated into a continuous delivery/continuous deployment environment from the same deploy agent to multiple destination hosts (with different projects).  This will allow the deployments to scale well in an automated deployment environment.

With port range socket is tested before port is used.

This was a cherry pick from https://github.com/russss/Herd/pull/14.