Correctly implement compareTo contract for Type

We ran into an issue with resolving mappings, where a subtype was returned in cases where an explicit mapping for a more appropriate supertype  was available. This pull request changes the Type.compareTo method to adhere to the Comparable contract. A testcase asserts this. This pull request is related to https://code.google.com/p/orika/issues/detail?id=108