refactors the code related to generic types

Before, there was three places for storing actual generic types (as opposed to declaration of generic type parameters):
in CtInvocation, in CtExecutableReference (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.