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).