More cleanup of Errors -- including sources as a factory method rather than push/pop methods (that require try/finally clauses)

I'll want to get this for InjectionPoints sooner or later also.

Also merging AddMessageCommand and AddThrowableErrorCommand, with a command that ads an spi.Message.

git-svn-id: https://google-guice.googlecode.com/svn/trunk@532 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/src/com/google/inject/FactoryProxy.java b/src/com/google/inject/FactoryProxy.java
index 67f89e6..cf7fe4c 100644
--- a/src/com/google/inject/FactoryProxy.java
+++ b/src/com/google/inject/FactoryProxy.java
@@ -41,13 +41,10 @@
   }
 
   public void notify(final InjectorImpl injector, final Errors errors) {
-    errors.pushSource(source);
     try {
-      targetFactory = injector.getInternalFactory(targetKey, errors);
+      targetFactory = injector.getInternalFactory(targetKey, errors.withSource(source));
     } catch (ErrorsException e) {
       errors.merge(e.getErrors());
-    } finally {
-      errors.popSource(source);
     }
   }