Rename ambiguous uses of 'class type' and 'extension'

Ambiguous 'class_type' is now 'class_signature' and ambiguous 'extension' is now 'type_extension'.
Definite 'type' is now 'datatype'. Also introduced polymorphic variant kind hierarchy.