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/test/fuzz/Makefile.am b/lib/go/test/fuzz/Makefile.am
index a8a8102..56f138a 100644
--- a/lib/go/test/fuzz/Makefile.am
+++ b/lib/go/test/fuzz/Makefile.am
@@ -24,7 +24,7 @@
 	touch gopathfuzz
 
 check: gopathfuzz
-	go test -mod=mod -tags gofuzz
+	go test -tags gofuzz
 
 clean-local:
 	$(RM) -r gopathfuzz gen-go