Report panic context for SingletonContext.VisitAllModules

If a panic occurs in SingletonContext.VisitAllModules report the
module that was being visited.

Change-Id: Ia7fc07e2e33e9e3c0297903d3b06b7efb33f0105
diff --git a/singleton_ctx.go b/singleton_ctx.go
index 333811d..1b044fa 100644
--- a/singleton_ctx.go
+++ b/singleton_ctx.go
@@ -212,7 +212,18 @@
 }
 
 func (s *singletonContext) VisitAllModules(visit func(Module)) {
-	s.context.VisitAllModules(visit)
+	var visitingModule Module
+	defer func() {
+		if r := recover(); r != nil {
+			panic(newPanicErrorf(r, "VisitAllModules(%s) for module %s",
+				funcName(visit), visitingModule))
+		}
+	}()
+
+	s.context.VisitAllModules(func(m Module) {
+		visitingModule = m
+		visit(m)
+	})
 }
 
 func (s *singletonContext) VisitAllModulesIf(pred func(Module) bool,