Allow self-referencing closures.
Allow self-referencing closures.

Example:
  var f = fib(i) {
    if (i < 2) return i;
    return fib(i - 1) + fib(i - 2);
  };
  print(f(5));  // => 5

The only thing we need to do is make the element representing the current closure point to 'this' inside its body.
In the process I had to fix some other minor issues that were triggered by this change.

Review URL: https://chromiumcodereview.appspot.com//9378040

git-svn-id: c93d8a2297af3b929165606efe145742a534bc71@4183 260f80e4-7a28-3924-810f-c04153c831b5

dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk