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

Sometimes you may not be able to retry on the different server, if the service is not stateless. 

Another use case to retry on the same server is when the request goes to an absolute URI like google.com. You can only retry on the same server.