Insteon: Rework Set Routine in BaseObject

The old routine contained a lot of unnecessary logic that made it difficult to parse.  Indeed, I am not sure I understand everything that it was doing.

A number of functions which were handled by the set routine in BaseDevice were also copied over.
Insteon: Result of Request Status Call BaseObject Set_Receive
Insteon: Change calls from DeviceController to BaseObject Set
Insteon: Remove DeviceController Set Routine
Insteon: Remove or Condense Unnecessary Set Routines

Many devices had their own set routines that duplicated the functionality of the BaseObject routine.
Insteon: Define Derive_Link_State for All Objects

Rather than testing and running derive_link_state only if a device is not_dimmable, call derive_link_state for all objects.

BaseObject::Derive_Link_State remains the same

DimmableLight::Derive_Link_State will return on,off, or 0%-100% from the input link_state.

Remove all logic which selectively ran derive_link_state
Insteon: Call Set on Status_Request Response

Necessary in order to cause set_linked_devices to run
Insteon: Condense Not_Responser Set Routines

Add logic to BaseObject::Set to test is_responder before trying to send set command.
Insteon: Simplify Link_State Determination in Set_Linked_Devices

Makes the code easier to read.

Also allows for non standard link_states (0%-100%) to be passed to linked devices.
Insteon: Condense Is_Responder Routines

Individual object routines are not needed, just set the flag on creating the object.
Insteon: Remove Unnecessary Code from Set Routine

Bright and Dim are not valid states for non-dimmable devices and will be rejected.

Toggle state rewritten to be much more condensed.
Insteon: Remove Unnecessary Set Subs in BaseController and InterfaceController

InterfaceController will defer to BaseObject

No need for routine in BaseController
Merge branch 'master' into insteon_set_redux
Insteon: Hijack is_Acknowledged for InterfaceController

InterfaceController is different in that when its state is set by an outside object, MH needs to update the linked devices.  By moving this to is_acknowledged, the states of the linked devices will only be updated if the scene command was successfull.

Is_responder also always needs to be set to true for interfacecontroller even though it is not a root device.
Insteon:Simply Set Routine in KeypadLinc
Insteon: Replace Set Sub with Derive_Message in FanLinc

Trying to keep the code in the two set routines in sync is just asking for trouble.

Derive Message allows MH to insert a specialized message into the set command.
Insteon: Remove Set Routine from Thermo_i2CS

Trying to keep the code in the routine in sync with the BaseObject code is a bad idea.

Instead just tie_events to each of the subgroup objects
Insteon: Cleanup Set Routine in IOLinc

No way to avoid hijacking BaseObject::Set
Insteon: Remove BaseController:Derive_Message Routine

It did absolutely nothing
Insteon: Replace leading spaces with tabs in BaseObject::Set