Ticket 23780

Using a model's meta to define a list of fields to use for natural keys. Eliminates the double implementation of natural keys needed in order to use them, also supports inheritance.