refactors the code related to generic types

Before, there was three places for storing actual generic types:
in CtInvocation, in CtExecutable (setParameterTypes), in CtGenericReference.

Now, everything has been unified in a single place: CtGenericReference.
This facilitates much writing analysis and transformation of generics.

All tests pass after the refactoring.