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

We should use retry(predicate) instead.  The OperatorRetry implementation deals better with RxJava idiosyncrasies.