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).

cc @danielgtaylor @kyleknap 
I've added a comment to this test.

It's using nose test generators to cut down on test duplication.  Each of these is its own unique test, but if I just had a for loop in a normal test_method in a unittest.TestCase class, the first failure would trigger an AssertionError and we wouldn't get any info on the remaining attributes.