Use existing nonzero values in autoincr fields instead of overwriting with new autoincr value

Previously, if a field mapped to an auto-incremented column, its value
was thrown away during inserts and was replaced by the
auto-incremented value reported by the database. This commit changes
that behavior. Now, if the field value is nonzero, the existing value
is inserted into the database and the auto-incrementing sequence is
not used. If the field value is 0, the previous behavior still
applies.

This breaks code that expects modl to overwrite nonzero autoincr
fields with the next value from the auto-incrementing sequence.