Run the tests in parallel

This saves about 1s, or 1/3 of the test runtime. The linking is still
much slower, but this we can control.
diff --git a/blame_test.go b/blame_test.go
index a2a4d38..ec96af7 100644
--- a/blame_test.go
+++ b/blame_test.go
@@ -6,6 +6,7 @@
 )
 
 func TestBlame(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/blob_test.go b/blob_test.go
index 2b5ec4f..719d185 100644
--- a/blob_test.go
+++ b/blob_test.go
@@ -5,6 +5,7 @@
 )
 
 func TestCreateBlobFromBuffer(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/branch_test.go b/branch_test.go
index a0834a8..01a2e28 100644
--- a/branch_test.go
+++ b/branch_test.go
@@ -5,6 +5,7 @@
 )
 
 func TestBranchIterator(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -27,6 +28,7 @@
 }
 
 func TestBranchIteratorEach(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/cherrypick_test.go b/cherrypick_test.go
index a3246bd..bfa5ca8 100644
--- a/cherrypick_test.go
+++ b/cherrypick_test.go
@@ -33,6 +33,7 @@
 }
 
 func TestCherrypick(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/clone_test.go b/clone_test.go
index a6bbf94..24c3a09 100644
--- a/clone_test.go
+++ b/clone_test.go
@@ -10,6 +10,7 @@
 )
 
 func TestClone(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -35,6 +36,7 @@
 }
 
 func TestCloneWithCallback(t *testing.T) {
+	t.Parallel()
 	testPayload := 0
 
 	repo := createTestRepo(t)
diff --git a/config_test.go b/config_test.go
index fea8d8a..f31e73e 100644
--- a/config_test.go
+++ b/config_test.go
@@ -88,6 +88,7 @@
 }
 
 func TestConfigLookups(t *testing.T) {
+	t.Parallel()
 	var (
 		err error
 		c   *Config
diff --git a/describe_test.go b/describe_test.go
index 25af107..f0a45f4 100644
--- a/describe_test.go
+++ b/describe_test.go
@@ -8,6 +8,7 @@
 )
 
 func TestDescribeCommit(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/diff_test.go b/diff_test.go
index 850ed8e..6fbad51 100644
--- a/diff_test.go
+++ b/diff_test.go
@@ -7,6 +7,7 @@
 )
 
 func TestFindSimilar(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -61,7 +62,7 @@
 }
 
 func TestDiffTreeToTree(t *testing.T) {
-
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -189,6 +190,7 @@
 }
 
 func TestDiffBlobs(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/git_test.go b/git_test.go
index 58caf71..bdb6837 100644
--- a/git_test.go
+++ b/git_test.go
@@ -109,6 +109,7 @@
 }
 
 func TestOidZero(t *testing.T) {
+	t.Parallel()
 	var zeroId Oid
 
 	if !zeroId.IsZero() {
@@ -117,6 +118,7 @@
 }
 
 func TestEmptyOid(t *testing.T) {
+	t.Parallel()
 	_, err := NewOid("")
 	if err == nil || !IsErrorCode(err, ErrGeneric) {
 		t.Fatal("Should have returned invalid error")
diff --git a/index_test.go b/index_test.go
index 5f6b375..600b8b1 100644
--- a/index_test.go
+++ b/index_test.go
@@ -8,6 +8,7 @@
 )
 
 func TestCreateRepoAndStage(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -24,6 +25,7 @@
 }
 
 func TestIndexReadTree(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -53,6 +55,7 @@
 }
 
 func TestIndexWriteTreeTo(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -72,6 +75,7 @@
 }
 
 func TestIndexAddAndWriteTreeTo(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -106,6 +110,7 @@
 }
 
 func TestIndexAddAllNoCallback(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -127,6 +132,7 @@
 }
 
 func TestIndexAddAllCallback(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -155,6 +161,7 @@
 }
 
 func TestIndexOpen(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/merge_test.go b/merge_test.go
index 8059727..f2c84bc 100644
--- a/merge_test.go
+++ b/merge_test.go
@@ -6,6 +6,7 @@
 )
 
 func TestMergeWithSelf(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -24,6 +25,7 @@
 }
 
 func TestMergeAnalysisWithSelf(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -46,6 +48,7 @@
 }
 
 func TestMergeSameFile(t *testing.T) {
+	t.Parallel()
 	file := MergeFileInput{
 		Path:     "test",
 		Mode:     33188,
@@ -68,6 +71,7 @@
 
 }
 func TestMergeTreesWithoutAncestor(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -125,6 +129,7 @@
 }
 
 func TestMergeBase(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/note_test.go b/note_test.go
index 27e04be..9f64eb8 100644
--- a/note_test.go
+++ b/note_test.go
@@ -8,6 +8,7 @@
 )
 
 func TestCreateNote(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -27,6 +28,7 @@
 }
 
 func TestNoteIterator(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -63,6 +65,7 @@
 }
 
 func TestRemoveNote(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -86,6 +89,7 @@
 }
 
 func TestDefaultNoteRef(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/object_test.go b/object_test.go
index 2ae2a6a..cb262de 100644
--- a/object_test.go
+++ b/object_test.go
@@ -5,6 +5,7 @@
 )
 
 func TestObjectPoymorphism(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -88,6 +89,7 @@
 }
 
 func TestObjectOwner(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -104,6 +106,7 @@
 }
 
 func TestObjectPeel(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/odb_test.go b/odb_test.go
index dfd2ad0..3d22fc9 100644
--- a/odb_test.go
+++ b/odb_test.go
@@ -7,6 +7,7 @@
 )
 
 func TestOdbReadHeader(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -35,6 +36,7 @@
 }
 
 func TestOdbStream(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -64,7 +66,7 @@
 }
 
 func TestOdbHash(t *testing.T) {
-
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -92,6 +94,7 @@
 }
 
 func TestOdbForeach(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/patch_test.go b/patch_test.go
index 2d52fb4..291c705 100644
--- a/patch_test.go
+++ b/patch_test.go
@@ -6,6 +6,7 @@
 )
 
 func TestPatch(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/push_test.go b/push_test.go
index 8f6e806..f372882 100644
--- a/push_test.go
+++ b/push_test.go
@@ -5,6 +5,7 @@
 )
 
 func TestRemotePush(t *testing.T) {
+	t.Parallel()
 	repo := createBareTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/reference_test.go b/reference_test.go
index 761daf8..b6721e1 100644
--- a/reference_test.go
+++ b/reference_test.go
@@ -8,6 +8,7 @@
 )
 
 func TestRefModification(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -53,6 +54,7 @@
 }
 
 func TestReferenceIterator(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -131,6 +133,7 @@
 }
 
 func TestReferenceOwner(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -150,6 +153,7 @@
 }
 
 func TestUtil(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -177,6 +181,7 @@
 }
 
 func TestIsNote(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -210,6 +215,7 @@
 }
 
 func TestReferenceIsValidName(t *testing.T) {
+	t.Parallel()
 	if !ReferenceIsValidName("HEAD") {
 		t.Errorf("HEAD should be a valid reference name")
 	}
diff --git a/remote_test.go b/remote_test.go
index 978b803..3d00640 100644
--- a/remote_test.go
+++ b/remote_test.go
@@ -6,6 +6,7 @@
 )
 
 func TestListRemotes(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -33,6 +34,7 @@
 }
 
 func TestCertificateCheck(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -52,6 +54,7 @@
 }
 
 func TestRemoteConnect(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -63,6 +66,7 @@
 }
 
 func TestRemoteLs(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -81,6 +85,7 @@
 }
 
 func TestRemoteLsFiltering(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -107,6 +112,7 @@
 }
 
 func TestRemotePruneRefs(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -129,6 +135,7 @@
 }
 
 func TestRemotePrune(t *testing.T) {
+	t.Parallel()
 	remoteRepo := createTestRepo(t)
 	defer cleanupTestRepo(t, remoteRepo)
 
diff --git a/reset_test.go b/reset_test.go
index ec578bd..45777e4 100644
--- a/reset_test.go
+++ b/reset_test.go
@@ -6,6 +6,7 @@
 )
 
 func TestResetToCommit(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	seedTestRepo(t, repo)
 	// create commit to reset to
diff --git a/revparse_test.go b/revparse_test.go
index 75e9ffd..2835434 100644
--- a/revparse_test.go
+++ b/revparse_test.go
@@ -5,6 +5,7 @@
 )
 
 func TestRevparse(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -17,6 +18,7 @@
 }
 
 func TestRevparseSingle(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -29,6 +31,7 @@
 }
 
 func TestRevparseExt(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/status_test.go b/status_test.go
index 5b97b00..17ed94f 100644
--- a/status_test.go
+++ b/status_test.go
@@ -7,6 +7,7 @@
 )
 
 func TestStatusFile(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -27,6 +28,7 @@
 }
 
 func TestStatusList(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/submodule_test.go b/submodule_test.go
index 43c890a..fa2e98c 100644
--- a/submodule_test.go
+++ b/submodule_test.go
@@ -5,6 +5,7 @@
 )
 
 func TestSubmoduleForeach(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/tag_test.go b/tag_test.go
index 2fdfe00..3404923 100644
--- a/tag_test.go
+++ b/tag_test.go
@@ -7,6 +7,7 @@
 )
 
 func TestCreateTag(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -26,6 +27,7 @@
 }
 
 func TestCreateTagLightweight(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -50,6 +52,7 @@
 }
 
 func TestListTags(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -79,6 +82,7 @@
 }
 
 func TestListTagsWithMatch(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -116,6 +120,7 @@
 }
 
 func TestTagForeach(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
diff --git a/tree_test.go b/tree_test.go
index fae395a..f5b6822 100644
--- a/tree_test.go
+++ b/tree_test.go
@@ -3,6 +3,7 @@
 import "testing"
 
 func TestTreeEntryById(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)
 
@@ -22,6 +23,7 @@
 }
 
 func TestTreeBuilderInsert(t *testing.T) {
+	t.Parallel()
 	repo := createTestRepo(t)
 	defer cleanupTestRepo(t, repo)