Add capability to mark surrogate and natural key columns

This PR also adds a number of unit tests that provide coverage not previously present.