add Twin::Struct to easily have hashes mapped to objects. this also allows :default, etc.