Modified hop count tracking to use running average vs. max

In addition to the running average implementation, this update also
provides a few slight performance optimizations.  One of the primary
advantages to this algorythm is that it does not need to loop over
then entire array for each hop count update.  Also enhanced log_aldb_status
a bit to include the device name.
Merge branch 'master' into enhance_hopcount

Conflicts:
	lib/Insteon/BaseInsteon.pm
Insteon: Enhance HopCount, Change to Average of 10

A moving average of the last 20 hop_counts was a bit excessive and required 10 messages before a hop count would change.
Insteon_HopCount: Check Per Device Setting on All Calls to Default_Hop_Count

Moved per device setting outside of logic so that they are checked even if a hop_count is not passed.
Fix web_hook parameter passing, commonly used in Audrey speech.
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