enable nimbus to be asisgned with available port, instead of pre-configured 

This is one of a series pull requests, which aim to launch Storm cluster in a cluster environment.

Currently, Nimbus server is launched with a configured port number. In a cloud environment, 
we don't really know which port is actually available. So, it will be convenient if Nimbus could simply 
find an available port and launch it.

In this pull request, if the nimbus port is configured to be <=0, Nimbus server will find an available port.
If the configured port > 0, we will use that port. Nimbus announces the port number via Zookeeper for other processes (ex. Supervisors). 

When Supervisor and UI server starts, they will pick up Nimbus host/port from Zookeeper (instead of simply reading configuration file).