Tokenizer based annotations parser

This pull request changes the annotation parser in `lang.XPClass::parseAnnotations()` from a pure hand-crafted parser to one based on `token_get_all()`. 

## Code
The sourcecode is 40 lines shorter, much clearer and easier to maintain, and far more robust.

## Performance
Before:
```
OK: 1155/1175 run (20 skipped), 1155 succeeded, 0 failed
Memory used: 9575.32 kB (10095.08 kB peak)
Time taken: 2.556 seconds
```
After:
```
OK: 1170/1190 run (20 skipped), 1170 succeeded, 0 failed
Memory used: 9460.32 kB (10000.11 kB peak)
Time taken: 2.592 seconds

```

## Class constants
This pull request also implements class constants as annotation values, e.g. `#[@values([self::CONSTANT])]`. The word `self` points to the class the annotation is declared on. Simple names (e.g. `Class::CONSTANT`)  are resolved in the current namespace, namespaced names with leading backslash are resolved to global classes - both of which are loaded on demand.

## Strictness
The old implementation allowed several syntactic errors due to its implementation nature.

* Additional closing braces, e.g. `#[@values())]` or `#[@values())))))]`
* Missing commas, e.g. `#[@test @values]`

**These no longer work with the new implementation and will produce parse errors!**