improve type equality operators, fixes #3489
== is extensional equality (subtype(a,b)&&subtype(b,a))
=== is stricter, but now works appropriately on DataType (along with object_id)