Allow building a client that can select the service endpoint based on an
endpoint name specified in the ServiceInstance's additional endpoints.

The default behavior is to use the primary end-point (backwards compatible).
Use an Optional to hold endpoint name.

+ use Optiona to hold endpoint name
+ remove duplicate code in GET_ADDRESS

hat-tip: jsirois for these excellent suggestions in his review
Code cleanup and a bit of refactor to address jsirois's review comments.
Fixed a typo and a minor optimization
Merge pull request #124 from birmiwal/master

Support selecting additional end-points while building a Thrift client