Use emulated functions to proxify js function

With this modification, we can now :
-  access properties on js functions. For instance : 

```dart
js.scoped(() {
  final my = js.map({"a":"b", "c":"d"});
  // displays "a,c" although Object is a function
  js.context.console.log(js.context.Object.keys(my));
});
```
- call js function with as many arguments as you want. We was limited to 4.