THRIFT-5164: Add middleware framework for Go clients

This commit adds a simple middleware framework for Go clients.

It provides:

 * A `ClientMiddleware` function interface used to define the actual middleware
 * `WrapClient`, the function that you use to wrap a `TClient` in a list of middleware
 * A helper `WrappedTClient` struct to help with developing middleware

Client: go
4 files changed