THRIFT-4612: THeader support in go library

Client: go

Implement THeaderTransport and THeaderProtocol, with support of:

* clients:
  - headers
  - framedBinary
  - unframedBinary
  - framedCompact
  - unframedCompact
* transforms:
  - none
  - zlib
* info types:
  - key_value
* wrapped protocols:
  - TBinary
  - TCompact

The support list is in general on par of the THeader implementation in
the python library.

The cross-test passes, except ones related to cpp/nodejs http transport,
which were also failing for non-theader protocols.

This change also fixes two bugs:

1. A small issue in test/go/src/bin/testserver/main.go
2. A bug in TFrameTransport go implementation
diff --git a/test/go/src/common/server.go b/test/go/src/common/server.go
index 5ac4400..c6674ae 100644
--- a/test/go/src/common/server.go
+++ b/test/go/src/common/server.go
@@ -60,6 +60,8 @@
 		protocolFactory = thrift.NewTJSONProtocolFactory()
 	case "binary":
 		protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
+	case "header":
+		protocolFactory = thrift.NewTHeaderProtocolFactory()
 	default:
 		return nil, nil, nil, nil, fmt.Errorf("Invalid protocol specified %s", protocol)
 	}