Refactor: restructure model parsing, pass down parsed models.

This approach has revealed an issue with clashing naming: if two types
have the same `@XmlRootElement` name, they will have the same model IDs.

In the old code this was not apparent because they got overwritten in
the model collecting map, but this collection mechanism relies on
`equals`/`hashCode` to remove/skip already parsed Models.

This issue will have to be resolved somehow.