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: Add Is Deaf Routine for Battery Devices

Closed #279
Insteon: Add is_deaf Check to Sync Links, Fix Dumb Typo

Fix Delete Orphans Logic, had that backwards.
Insteon: Not All References are to Self

Reminder to self: don't use find and replace
Insteon: One More Typo
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: All_Link Cleanup Check for Active Message

Before calling setby on the active_message, make sure that an active message exists.
Merge pull request #285 from krkeegan/ref_activemessage

Insteon: All_Link Cleanup Check for Active Message
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.