Use multi-module to cleanup top level go.mod

Client: go

The go library itself does not have any third-party dependencies. We
have one third party dependency from the test code, which kind of
polluted from top-level go.mod file to the users of thrift go library.

We previous tried to clean that up by creating go.mod file at
lib/go/thrift, which caused issues to the release process and thus
reverted.

Use multi-module to separate tests requiring mock to their own modules
so that we can keep the top-level go.mod file clean.

Also some minor fixes on the github actions go workflow.
diff --git a/lib/go/Makefile.am b/lib/go/Makefile.am
index 06399f5..18b6b75 100644
--- a/lib/go/Makefile.am
+++ b/lib/go/Makefile.am
@@ -39,14 +39,14 @@
 # NOTE: We have to disable stdmethods in go vet until
 # https://github.com/golang/go/issues/52445 is fixed.
 check-local:
-	$(GO) vet -mod=mod -stdmethods=false github.com/apache/thrift/lib/go/thrift
-	$(GO) test -mod=mod -race ./thrift
+	$(GO) vet -stdmethods=false github.com/apache/thrift/lib/go/thrift
+	$(GO) test -race ./thrift
 
 clean-local:
 	$(RM) -rf pkg
 
 all-local:
-	$(GO) build $(GOBUILDEXTRA) -mod=mod ./thrift
+	$(GO) build $(GOBUILDEXTRA) ./thrift
 
 EXTRA_DIST = \
 	thrift \