Add constraints to metadata
So currently, metadata defines static values (e.g., number of columns is 100). can_accept method gets as input such metadata, and returns resulting one if this can be accepted by a method call. Now, the issue is that one cannot really know always from just metadata what output metadata will it be. It could depend on data itself (for example, one hot encoding might add a different number of columns based on number of various values in original column). So the output cannot be a metadata saying "the number of columns is 100". But it could be "the number of columns is larger than 100" (because initially there were so many columns, and primitive could just extend it). And then the next can_accept being called should be able to handle this and further, e.g., "columns = 2 * (>= 100)", or even "columns = rows * columns".