Major extension of RascalPrimitive with generic operators

Due to parameterized types it is necessary to have a generic version of
every operator in addition to all typed variants. For instance, we had
int_add_int, int_add_real, ..., set_add_set, ... but now we also have a
generic add that first checks argument types and then calls the
appropriate type-specific version.