Add generic support to isAssignableFrom

It's much more intuitive to use good old isAssignableFrom method. Correct generic handling is something I would expect from the implementation, since types in jcodemodel are not erased.

I had rewrite my isSubtypeOf function and turn it into isAssignableFrom. I've tried to test many Java's corner cases and added some tests for robustness.