Add denormalized structure builder

Useful for writing tests or manually creating structures.  It's
typically easier to hand write a denormalized model than it is to
write a normalized model, at least for simple cases (as is common
in tests).
Add comments and docstrings to builders

Explains how to use the classes and the purposes of several
of the classes and tests.
Merge branch 'add-denormalized-builder' into develop

* add-denormalized-builder:
  Add comments and docstrings to builders
  Add denormalized structure builder