Add variant type definition syntax
The variant type is a placeholder for any atomic type in UJO. To increase practical use the new syntax allows to create a new type containing a subset of other types and allows constraints on variants.
A fix of the grammar now raises an error if the wrong type is used in complex and homogeneous map/list definitions.
Edited by Maik Wojcieszak