Reworked unsigned support such that it can be used by other backends.

Not implemented using the same system as NOT NULL support.