Added Constant Schema type. Changed generic Schema representation

of enumerables to use Constant.
Add a doc header here explaining how the type is used, and that it negative numbers sometimes don't make sense (for Strings for instance)

I also think it'd be nice to have a record here instead, data Bound = Bound { lower :: Maybe Int, upper :: Maybe Int }.

A smart constructors would be useful too to make sure the lower bound is always `<=` the upper bound. And another smart constructor can be used for Strings that gives a descriptive error if any value is `< 0`.