make tests more restrictive by using Struct where was OpenStruct.
make :as work for Composition. the form doesn't know anything about that, it just knows the public attribute name (e.g. #song_id) whereas the Composition object knows the mapping to song.id.
fixes #81.