Fix possible NPE when starting a transport fails before startAsync() returns.

transportFailedOrStopped() sets activeTransport to null, but
obtainActiveTransport expected it to be non-null because it just set it.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=74264310
diff --git a/core/src/main/java/com/google/net/stubby/ChannelImpl.java b/core/src/main/java/com/google/net/stubby/ChannelImpl.java
index 158e99e..9fbba41 100644
--- a/core/src/main/java/com/google/net/stubby/ChannelImpl.java
+++ b/core/src/main/java/com/google/net/stubby/ChannelImpl.java
@@ -71,11 +71,14 @@
       if (state() != State.RUNNING) {
         throw new IllegalStateException("Not running");
       }
-      activeTransport = transportFactory.newClientTransport();
-      activeTransport.addListener(
-          new TransportListener(activeTransport), MoreExecutors.directExecutor());
-      transports.add(activeTransport);
-      activeTransport.startAsync();
+      ClientTransport newTransport = transportFactory.newClientTransport();
+      newTransport.addListener(
+          new TransportListener(newTransport), MoreExecutors.directExecutor());
+      transports.add(newTransport);
+      // activeTransport reference can be changed during this call, even if we hold the lock, due to
+      // reentrancy.
+      newTransport.startAsync();
+      activeTransport = newTransport;
     }
     return activeTransport;
   }