Inspect AUTO_INCREMENT status from the database instead of assuming.

Previously, if the primary key was numeric, it was assumed the DB
representation was AUTO_INCREMENT. This may not actually be
true. Better to inspect the database and get the actual state of the
paramter.
Use set() instead of dict() to hold unsigned columns.

When looking for unsigned columns, we only inspect the key of the
dictionary. This is the operation sets are optimized for.