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 listner has access to its own context, it should expect that object that is put into the context by itself be there when it tries to get it. Otherwise it is an error condition. So I am not sure if this is necessary.