Support type hints in @:enum abstract fields (to support GADT-like behaviour)

Subj. This would allow us to define things like:

```haxe
@:enum abstract SocketEvent<T:Function>(String) {

    var Connect : SocketEvent<Socket -> Void> = "connect";

    var Close : SocketEvent<Void -> Void> = "close";

}
```