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 
You know, I thought about that last night, and I already had a solution worked up, but then I completely forgot about it this morning.  (I knew that loop looked a little anaemic.)

It'll just reuse the loop's exitc.