Feature/keep annotations

the goal was to have the generated classes keep annotations that were on the original abstract classes. this way you could use the generated code with Jackson easily, using annotations like `@JsonProperty("myProp")` and having them just work.

i added a new property to the `Property` class that lists the annotations, and using the velocity template to add them to the get methods.

this pull request contains the temporary fix for the breaking test, so i expect to rebase/fix it before actually getting merged in.
that was to prove that an enum doesn't use `toString()` to determine the actual value. instead the value we see returned in `entry.getValue().toString()` is `TestEnum.A`, etc.