allows setting and saving nested attributes

This is done using the lazy attributes and allowing save to take a block.