Use Lombok for model classes

Lombok reduces a lot of the boilerplate code needed to create model classes in Java. It's an extra dependency but since it works as a Java annotations processor it's only required when building this specific library, not at runtime.