Add unit tests for Buildkite caching.

This commit also introduces a new interface that encapsulates the "real" Buildkite client and that can be easily replaced with a mock for the test.
diff --git a/metrics/main.go b/metrics/main.go
index 24a371d..43ada28 100644
--- a/metrics/main.go
+++ b/metrics/main.go
@@ -53,10 +53,11 @@
 		log.Fatalf("No pipelines were specified.")
 	}
 
-	bk, err := clients.CreateBuildkiteClient(settings.BuildkiteApiToken, settings.BuildkiteDebug, time.Duration(settings.BuildkiteCacheTimeoutMinutes)*time.Minute)
+	bkAPI, err := clients.CreateBuildkiteAPI(settings.BuildkiteApiToken, settings.BuildkiteDebug)
 	if err != nil {
-		log.Fatalf("Cannot create Buildkite client: %v", err)
+		log.Fatalf("Cannot create Buildkite API client: %v", err)
 	}
+	bk := clients.CreateCachedBuildkiteClient(bkAPI, time.Duration(settings.BuildkiteCacheTimeoutMinutes)*time.Minute)
 
 	gcs, err := clients.CreateGcsClient()
 	if err != nil {