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/tutorial/go/Makefile.am b/tutorial/go/Makefile.am
index e323358..b2f70ce 100644
--- a/tutorial/go/Makefile.am
+++ b/tutorial/go/Makefile.am
@@ -17,11 +17,7 @@
 # under the License.
 #
 
-if GOVERSION_GE_118
 GOBUILDEXTRA = -buildvcs=false
-else
-GOBUILDEXTRA =
-endif
 
 gen-go/tutorial/calculator.go gen-go/shared/shared_service.go: $(top_srcdir)/tutorial/tutorial.thrift
 	$(THRIFT) --gen go:thrift_import=github.com/apache/thrift/lib/go/thrift,package_prefix=github.com/apache/thrift/tutorial/go/gen-go/$(COMPILER_EXTRAFLAG) -r $<
@@ -29,22 +25,22 @@
 all-local: gen-go/tutorial/calculator.go
 
 check: thirdparty-dep all
-	$(GO) build $(GOBUILDEXTRA) -mod=mod -o go-tutorial ./src
-	$(GO) build $(GOBUILDEXTRA) -mod=mod -o calculator-remote ./gen-go/tutorial/calculator-remote/calculator-remote.go
+	$(GO) build $(GOBUILDEXTRA) -o go-tutorial ./src
+	$(GO) build $(GOBUILDEXTRA) -o calculator-remote ./gen-go/tutorial/calculator-remote/calculator-remote.go
 
 thirdparty-dep:
 
 tutorialserver: all
-	$(GO) run -mod=mod src/*.go -server=true
+	$(GO) run src/*.go -server=true
 
 tutorialclient: all
-	$(GO) run -mod=mod src/*.go
+	$(GO) run src/*.go
 
 tutorialsecureserver: all
-	$(GO) run -mod=mod src/*.go -server=true -secure=true
+	$(GO) run src/*.go -server=true -secure=true
 
 tutorialsecureclient: all
-	$(GO) run -mod=mod src/*.go -secure=true
+	$(GO) run src/*.go -secure=true
 
 clean-local:
 	$(RM) -r gen-* go-tutorial calculator-remote