Refactoring of load balancer execution API and add ExecutionListener

* Refactored the load balancer execution API as part of #161
* Addressed issue #146
* Added meta info to Server to capture additional service and instance information in deployment environment

Since the parameter is already a Collection, I feel it will seem strange if we do further accumulation for the with() method in a builder. At least it does not seem intuitive to me.