title: $q.all returns undefined for all values
body: <p>I'm trying to wait on 3 promises but <code>$q.all</code> appears to resolve them at once and returns <code>undefined</code>for each single value, I can't figure out why:</p>
  
  <pre><code>this.doWork = function() {
    var deferred = $q.defer();
    var a = get('a'),
      b = get('b'),
      c = get('c');
    $q.all([a.promise, b.promise, c.promise])
      .then(function(values) {
        deferred.resolve(new Test(values[0], values[1], values[2]));
      }, function(reason) {
        deferred.reject(reason);
      });
    return deferred.promise;
  };
  
  function get(param) {
    var deferred = $q.defer();
    $timeout(function() {
      if (true) {
        deferred.resolve({
          value: param
        });
      } else {
        deferred.reject({
          message: "Really bad"
        });
      }
    }, 1000);
    return deferred.promise;
  }
  </code></pre>
  
  <p>(in the actual code <code>get()</code> uses <code>$http</code> instead of <code>$timeout</code>, of course). Here's a <a href="http://plnkr.co/edit/3aE63U0Q2wzkWdSiEDld" rel="nofollow">Plnkr</a> with the code, can anybody please shed some light on what the issue is?</p>