quiet down warnings about module_method_rebinding
add the ability to have modules perform setup and teardown tasks

modules may now define module functions of cast_object and uncast_object which allow the setup and
teardown of details like instance variables used for certain behavior.

Example:
module Special
  def self.cast_object(object)
    object.instance_variable_set(:@special_value)
  end
  def self.uncast_object(object)
    object.remove_instance_variable(:@special_value)
  end

  def special_behavior
    # check, calculate, and otherwise use the ivar
  end
end

obj.cast_as(Special)
obj.special_behavior
obj.uncast

This would leave not trace of the Special module leaving or using an ivar.
add docs about cast/uncast hooks