Used to represent a single field of an object stored in the database. Objects
which store themselves in the database should store a set of static final
FieldDefinitions at the top of their class definition to indicate their memory map.
This serves as a standard way to document the memory map for such structs, provides
access to the field offsets, and provides a convenience getter.
There are two ways to use this. Callers can either use the "get" method to access
the value of the field, or can use the public "offset" attribute to perform the reads
manually. The get function is more convenient but allocates objects and so should
probably not be used for frequently-accessed fields or primitive types that would
end up being autoboxed unnecessarily.