Support circular annotations

With es6-module-loader, it is possible to use circular imports.
Classes from circular imports are not available during the module
evaluation and thus this code fails (`Inject` is undefined):
```js
Foo.annotations = [new Inject];
```

This commit changes the annotation output to use a getter:
```js
Object.defineProperty(Foo, 'annotations', {
  get: function() {
    return [new Inject];
  }
});
```

NOTE:
If the code tries to read `.annotations` or `.parameters` property
during the module evaluation (root context), it won’t work.
I can't find this code in https://github.com/ModuleLoader/es6-module-loader neither in https://github.com/systemjs/systemjs so I don't know where to send the PR.

For now, I'm gonna remove the cloning and keep it in Traceur repo.
@guybedford ?