fix: prevent nil pointer panic in codereview compareTestResults

Fix for https://github.com/boldsoftware/sketch/issues/175

Fix nil pointer dereference when comparing test results between commits
where a package exists in the after state but not the before state.

The panic occurred at line 867 when accessing beforeResult.TestStatus[test]
without checking if beforeResult was nil. This happens when testing new
packages that didn't exist in the base commit.

Now properly check for nil beforeResult and default to testStatusUnknown
for tests in packages that didn't exist in the before state.

Add comprehensive unit tests covering:
- New package with passing tests (the panic scenario)
- New package with failing tests (regression detection)
- Existing package regressions (ensure normal flow still works)
- End-to-end integration test for new package scenario

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: sab802d91eff08039k
diff --git a/claudetool/codereview/differential.go b/claudetool/codereview/differential.go
index d13cd9e..ff25b22 100644
--- a/claudetool/codereview/differential.go
+++ b/claudetool/codereview/differential.go
@@ -864,7 +864,10 @@
 				slog.WarnContext(context.Background(), "unknown test status", "package", pkg, "test", test)
 				continue
 			}
-			beforeStatus := beforeResult.TestStatus[test]
+			beforeStatus := testStatusUnknown
+			if beforeResult != nil {
+				beforeStatus = beforeResult.TestStatus[test]
+			}
 			if isRegression(beforeStatus, afterStatus) {
 				testLevelRegressions = append(testLevelRegressions, testRegression{
 					Package:      pkg,