Update destroy to completely clean up after itself

Improved the create and destroy methods to better examine changes to the
element and restore it to its original state. Updated associated tests
to catch element changes as well as children.