Improved Model Parsing (with refactors)

## Changes
- Support for JAXB annotations added (`@XmlRootElement`, `@XmlElement`, `@XmlTransient`)
- Support for Jackson annotations added (`@JsonRootName`, `@JsonProperty`, `@JsonIgnore`)
- Enum classes are documented automatically with valid values
- A new conflict resolution has been added to model name generators, so models with the same name in the same resource (we had one like that) won't get overriden.

## Format changes
- The order of properties are now following the swagger-core (to be more comparable side-by-side)
- Empty values are not included in output unless required (eg. summary, notes, description, models)

## Refactors
- The parser and translation (giving names to objects based on types, variable names, annotations) code have been refactored. This will hopefully allow for a more throughout test coverage on the long run.
- Most of the code from the original class is reused however, just restructured to different classes, but this *does* mean that it looks like *everything* has changed.

## Other changes
- There is now a `HISTORY.md` to track (but largely incomplete...)

## Notes
I realise this pull request is a long shot because it changes so much code that it's basically doing more than one thing. Please let me know if you would need me to do some additional work (eg. splitting this up, or to clarify things).