Type canonicalization

Canonicalize qualified type names so qualifiers are always the declaring
class of the qualified type. For example, given:

```
class A<T> { class Inner {} }
class B extends A<String> {}
```

The type name `B.Inner` must be canonicalized as `A<String>.Inner` in bytecode.

MOE_MIGRATED_REVID=135300804
32 files changed
tree: 0cd55d103d47045c2932a25fc40723630c55bf35
  1. java/
  2. javatests/
  3. LICENSE
  4. pom.xml