Initial Tests of Changing All-Link Processing Around

Don't clear active message on direct all link received messages. Likely need to push them to an array.

Clear active message when All-Link Status Report received.  If NACK received, need to check array for devices that have not responded.

Needed to grossly increase send_timeout to allow time for this to run, for one of my scenes this takes 6 seconds.
Clean Up Coding Errors
Reformulate Send_Timeout for All Link Commands

All Link Commands from the PLM can take a very long time to process.  The amount of time depends on the number of objects linked to this scene.  Plus if the PLM is forced to send any direct commands, this can take even longer.

For example, on my network, sending a command to 20 devices without any direct commands took 6 seconds.

We obviously can't set a send_timeout for this amount of time.  So instead, we set a normal initial timeout and then keep resetting the timeout when we receive a direct ACK or NACK because these are signs that the PLM is still working on the command.

Now, since the final message from the PLM should never fail to arrive, we never really need to worry about this.  But we need some timeout, otherwise we have the possibility of having MH lockup waiting for a message that never arrives.
Add Test Logic for Getting Members of PLM Scene

Next add members to array for object
Remove ACK Hash and Correct for Discrepancy in Documentation for ALL-Link Cleanup Failure Report

Misunderstood what would be warrant a NACK in the All Link Status Report.  A NACK is only issued if the PLM is interrupted in sending the direct commands. As such ACK HASH is not needed.

Instead an ALL-Link Cleanup Failure Report is issued if a device fails to respond.

However, the ALL-Link Cleanup Failure Report is incorrectly documented in the Modem guide.  The message is only 6 bytes long and byte 3 in the documentation doesn't exist.
Add All Link Direct Cleanup Capability

Added ability to send all link direct cleanup messages to devices that failed to respond to PLM scene command.
Match proper All_Link Alias States with Command
Fix All_Link_Status_Failure in Message Decoder, Cleanup Comments and Log Messages
Remove Message Types All_Link_Recall and Alias

Their commands are identical to on and off and adding the All_Link message type keys to the hash caused issues as an on command sent from a device now appeared to be an All_Link_Recall.
Add a message to the Log File for User Code Errors
Merge pull request #89 from krkeegan/fix_issue_43

Add a message to the Log File for User Code Errors
Merge pull request #78 from krkeegan/All_Link_Fixes

Fix for Issue #75 - Correct Handling of All_Link Commands
Merge branch 'master' into i2_aldb_support

Conflicts:
	lib/Insteon/BaseInterface.pm
Refactor on_xx_insteon_received and add timeout for i2 aldb read

Moved most of the device specific code into Insteon::BaseObject->_process_message
and let the latter determine if the message transaction should be cleared.  This
provides a better separation between interface level logic and message/device
level logic.  I also implemented more consistent cmd1 checking for the ACKs. There
is more cleanup that can be done here later.  Could probably also move some of
the 'cleanup' logic from on_xx_insteon_received as well.

Implemented a transaction timeout for ALDB i2 extended read requests.  This
was a bit different than other messages since the ACK is not the end of the
transaction.  The refactor made this much easier.
Modify CRC error warning message to ignore non-CRC capable devices

Moved CRC warning message to Insteon::BaseObject->_process_message where
the engine_version can be checked for I2CS.
Implemented "log all ALDB status" PLM voice command

Walks through every Insteon device and logs:
- Hop Count
- Engine Version
- ALDB Type
- ALDB Health
- ALDB Scan Time
Map aldb version based on restored engine_version

This update will correctly map the I2 aldb routines for devices that
were previously saved as I2 or I2CS just after restoring saved states.
The startup scan will also validate the aldb type if it is run but it
is no longer necessary.  When adding a new device the user must run
the 'get engine version' voice command once or use the startup poll.
Cleanup logging

Made minor changes to logging and refactored the scan logic to
reduce duplicate code (and duplicate log lines).
Remove Duplicate Success Callback in PLM Add_Link

Fixes issue /hollie/misterhouse#90
Merge pull request #91 from krkeegan/fix_issue_90

Remove Duplicate Success Callback in PLM Add_Link