TODOs:
 - Ensure validation checks are solid
 - Add tests of validation logic
 - Optimize Buffer classes?
 - Add compile-time asserts to verify object packing and padding.
 - Investigate making arrays of objects not be arrays of pointers.
