Add support for spy objects

This PR adds support for `@IMPLEMENTS` (cause it is required for the Dart version of spies to work). At some point AtScript will get support for interfaces. Once it happens, we should replace 

```
@IMPLEMENTS(Interface)
class MyClass {}
```

with

```
class MyClass implements Interface {}
```

rename to `static assert(value)`