organize spec setup code in spec/support folder
fix incorrect description in spec block
custom RSpec `match_sql` matcher
better example classes for specs

As we added more examples and permutations to the specs, the classes
that were there didn't make sense any more. (Why would gentlemen and 
gentlewomen have gloves, but not just men and women?).

The new classes are easier to understand, more fun to work with, and 
are more easily expanded upon as we want to test more situations.
rearrange interface spec to mimic source file
specify db table on has_many sql conditions

`has_many_as_polymorphs` uses a Proc to set conditions on a has_many 
relationship. On Rails 3.2, when this is used in conjunction with a
has_many :through relationship, the generated SQL specifies the wrong
table name for the conditions generated by `has_many_as_polymorphs`.

This commit fixes the issue by making `has_many_as_polymorphs` generate
conditions that specify the table they should be applied to.