maintner: change type/name of GerritCL meta fields, ensure Meta always non-nil

They were of type GitCommit, but we want to hang the useful methods
off the existing GerritMeta wrapper.

This was the plan earlier (when the GerritMeta type was added), but
that earlier CL didn't go all the way and convert callers.

This will likely break some maintner-using code, but there aren't many
callers.

Also, document & enforce that Meta & Commit are always non-nil when
enumerating CLs and when looking up CLs. Previously, two deleted CLs
didn't have this property, as the Gerrit server was returning a ref
for a version of the commit, but no meta ref. Filter those out.

Fixes golang/go#22060
Fixes golang/go#21984

Change-Id: I67727977c7a25e750f51a6ff7f3e00aaf960ef9f
Reviewed-on: https://go-review.googlesource.com/107296
Reviewed-by: Dmitri Shuralyov <dmitri@shuralyov.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/maintner/gerrit_test.go b/maintner/gerrit_test.go
index 79cfce1..1cbcdaf 100644
--- a/maintner/gerrit_test.go
+++ b/maintner/gerrit_test.go
@@ -197,23 +197,27 @@
 }
 
 func TestOwnerNameAndID(t *testing.T) {
+	cl := &GerritCL{}
+	cl.Meta = &GerritMeta{
+		CL: cl,
+		Commit: &GitCommit{
+			Parents: []*GitCommit{
+				&GitCommit{
+					Author: &GitPerson{
+						Str: "Rick Sanchez <137@62eb7196-b449-3ce5-99f1-c037f21e1705>",
+					},
+				},
+			},
+		},
+	}
+
 	testCases := []struct {
 		cl        *GerritCL
 		OwnerID   int
 		OwnerName string
 	}{
 		{&GerritCL{}, -1, ""},
-		{&GerritCL{
-			Meta: &GitCommit{
-				Parents: []*GitCommit{
-					&GitCommit{
-						Author: &GitPerson{
-							Str: "Rick Sanchez <137@62eb7196-b449-3ce5-99f1-c037f21e1705>",
-						},
-					},
-				},
-			},
-		}, 137, "Rick Sanchez"},
+		{cl, 137, "Rick Sanchez"},
 	}
 	for _, tc := range testCases {
 		if got := tc.cl.OwnerID(); got != tc.OwnerID {