Added Field and LazilyInstantiate

Field classes change getters and setters from "obj.getField()" to
"obj.field.get()"
LazilyInstantiate helps to create lazily instantiated objects.
Documented LazilyInstantiate