- redefined how the mapper determines primary keys. this is to help with the new deferred
polymorphic loading. it takes stock of all the primary keys of all of its tables in all cases,
including when a custom primary key is sent, to maximize its chances of being able to INSERT into each table.
then, whether or not the custom primary key is sent, it gathers together columns which are equivalent via
a foreign key relationship to each other or via a common parent column, similarly to how Join does it.
this continues along the path first set up from [ticket:185]. so primary keys of mappers are always
going to be "minimized" as far as number of columns. finally, the list of pk cols is normalized to the
mapped table. this becomes the mapper's "primary key" and is distinct from all the per-table pk column
collections.
- added "deferred poly load" versions to magazine test, cut down on table recreates in polymorph test.