Reflection bugs for abstract methods in generic classes 

This pull request fixes type parameters for abstract methods not being replaced correctly. The meta data (which is used by reflection) contained the placeholders

```php
[
  DETAIL_ARGUMENTS => array('K'),
  DETAIL_RETURN => 'V'
]
```

...whereas it should have contained the generic arguments' type names:

### Works as expected:
```php
<?php
  #[@generic(self= 'T')]
  class Test extends Object {
    #[@generic(params= 'T')]
    public function verify($t) { }
  }
?>
```

```sh
$ xp -w 'XPClass::forName("Test")->newGenericType(array(Primitive::$INT))->getMethod("verify")->getParameters()'
[
  0 => lang.reflect.Parameter<lang.Primitive<int> t>
]
```

:ok:

### Shows the problem with parameters
```php
<?php
  #[@generic(self= 'T')]
  abstract class Test extends Object {
    #[@generic(params= 'T')]
    public abstract function verify($t);
  }
?>
```

```sh
$ xp -w 'XPClass::forName("Test")->newGenericType(array(Primitive::$INT))->getMethod("verify")->getParameters()'
[
  0 => lang.reflect.Parameter<lang.Type<var> t>
]
```

:x:  - *expecting `lang.Primitive<int> t`*

### Shows the problem with return types
```php
<?php
  #[@generic(self= 'T')]
  abstract class Test extends Object {
    #[@generic(return= 'T')]
    public abstract function newInstance();
  }
?>
```

```sh
$ xp -w 'XPClass::forName("Test")->newGenericType(array(Primitive::$INT))->getMethod("newInstance")->getReturnType()'
lang.Type<void>
```

:x: - *expecting `lang.Primitive<int>`*