Support ConfigurationSerializeable objects

This also adds a good deal of error checking.
Add ItemMetaData test cases