Make primitive's constructor arguments optional

Currently it is required in primitive subclasses that constructor has to accept all constructor arguments from the base primitive class. In this way caller can always specify those arguments without checking at runtime if they are needed.

But this makes implementing primitives cumbersome, especially if those arguments are not even used. And also it hides the signal that a primitive is maybe really interested in this information.