fix polymorphic relationship w/ inherited classes

When defining a polymorphic relationship with an object of a type that inherits
from an ActiveRecord class, rather than an instance of the AR class itself, the
id columns should be named according to the associated object, not the parent
ActiveRecord class.
refactor interface using InterfaceBuilder class

This change encapsulates the logic associated with managing the
polymorphic interface to a separate class, and lets the Interface
module handle method definitions used by ActiveRecord classes.

There are no unit tests for the InterfaceBuilder because all of its
functionality is tested through the specs on the Interface module, and
unit testing is complicated by the reliance of all of this functionality
on ActiveRecord (meaning, the unit tests end up largely being redundant to
what is tested in the interface).
allow providing a new record to dynamic setter

Standard belongs_to relationships allow specifying new records for the
associated object, so we should allow it for polymorphic relationships too.
This commit changes it so that in the following situation:

class Shoe
  belongs_to_polymorphic :man, :woman, as: :wearer
end

we are able to write Shoe.new(wearer: Woman.new) and have it properly
associate the records.
collapse exposed introspection to a single object

Instead of creating a lot of helper methods and/or constants, just
create a single method named #polymorpheus, which exposes aspects
of the interface that are relevant for introspection.
add POLYMORPHEUS_ASSOCIATIONS const to interface
add `has_many_as_polymorphs` declaration option
ENV var to specify Rails version for specs
update README to describe new changes & fix errors
version bump to 2.0.0

Since the recent interface changes break the previous API, this
is a major version bump.