Autodetecting an unused port for connection

From this commit onwards, gauge will find a unused port and use it for
test execution.

GAUGE_PORT can be set to override this behaviour. If it is set, gauge
will not use a random port.

The port which is currently using will be written to GAUGE_INTERNAL_PORT
variable and test runners should use this variable to get the port