Merge remote-tracking branch 'origin/master'
Refactored model classes and fixed inheritance in java and cpp generators

Inheritance now works in java & cpp.
Java code compiles due to directories being appropriately created for the packages.

Refactored name to AbstractElement and have it default to a random value that also includes its type.

Refactored all model classes to use a builder style interface for all setters.