Like Data.Dynamic and Data.Typeable but supporting polymorphic values