Ports

Fixes hacky method of creating ports.  Ports are now chosen randomly from a range, and the port allocator first checks to see if those ports are free before marking them as in use.  When containers are destroyed allocated ports are returned to the range.  This is the core change to address Issue #57 and Issue #59.  Fixing these correctly will also require doing much of the the work for fixing #44 and #54.

@peterbourgon @ohm 
As it stands now, the exit method doesn't wait for the loop function to return, which opens the door for racy and buggy test conditions. One way to accomplish deterministic exits is the [quitc idiom](https://github.com/soundcloud/harpoon/blob/master/harpoon-scheduler/registry.go#L84-88). Maybe there's another way, too...