Represents a constrained version. By default, when a dependency has a version number, it is assumed
that the version can be upgraded during conflict resolution (typically, version 1.15 can be upgraded to 1.16). However
in some cases we don't want this behavior. This class represents the base spec of module constraints.