Insteon: Pass Message Clearing Decision to on_read_write_aldb

on_read_write_aldb now returns a 1/0 corresponding to whether the current message should be cleared.

When a bad message arrived, on_read_write_aldb attempted to requeue the message that was currently pending.  However, _process_message did not clear the pending message until after this routine was run.  As a result, a new message was not queued because it was duplicative, but then the current message was cleared.  This resulted in stalling the message queue.

Fixes bug #258
Insteon: Don't Clear Queue on Unhandled Mem_Action

Missed one instance in which the queued message should not be cleared.
Should not be cleared on an unhandled mem action either.

Further Fix to #258
Insteon: Add Success_Callback to Message Object

Success_callback is eval'd when the ACK for the message is received.
- Note: There are so many callbacks all over the place within the code, it might be nice to condense as many as possible into this routine.
Insteon: Add routine for Linking I2CS devices

The routine requires a few steps to complete
Insteon: Add Callback to Routines used by Link to I2CS

Each routine needs to have success and failure callback parameters
Insteon: Convert Link_to_Interface to Handle i2cs or non-i2cs devices

The routine first checks to see if the device will respond to a get_engine_version request.
If any ACK is received the routine continues as normal.  In this case even if the device is an I2CS, the device must already have link entries as it responds to the PLM.
If a NAK is received, it is assumes that this device is an i2cs and the link_to_interface_i2cs routine is called.
Insteon: Linking Mode Requires an ACK, Don't Clear Messages on All_Link_Complete
Insteon_I2CS_Linking: Clear Active Message When PLM Reports All-Linking-Complete

Rather than clear the linking mode command when the device ACKs, wait to clear the message until the PLM reports the linking success.
Insteon_I2CS_Linking: Move Success Callback Eval to BaseInterface

This allows for per device _process_message subs to exist without needing to reproduce all of the eval code.
Fix Nabble Links in MailList Page

Closes #230
Insteon_i2CS_Linking: Add Success_Callback to Extended Messages
Change Referenced to Web Cache Directory to html_alias_cache

html_alias_cache is defined as data_dir/cache by default.  Most installations will only require the data_dir to be defined, only those with special installations would need the cache dir to be outside the data_dir.

Closes #229
Insteon_TriggerLinc: Add Initial Support for TriggerLinc Devices

Basically just a copy of code for RemoteLincs, however, TriggerLincs support even fewer commands so much of the code was cut down.

I put the code in the Security.pm file as these are ostensible security devices, however as noted above, these are very similar to RemoteLincs.  Although, they are not that dissimilar from Motion sensors which are also in this file.

I don't own a TriggerLinc so this coding is all done blind.

Thanks to @JaredF for his testing work.

Closes #245
Insteon_ApplianceLink: Add DeviceController to Allow for Sync_Links

Closes #271
Insteon_Scene_Builder: Make Sure a Controller Exists Before Creating a Scene

If no contoller existed, prior code would throw a recoverable error.

This addition prevents the error and provides a readable error message in the print_log
Merge pull request #272 from krkeegan/fix_issue_271

Insteon_ApplianceLink: Add DeviceController to Allow for Sync_Links
Merge pull request #273 from krkeegan/scene_simple

Insteon_Scene_Builder: Make Sure a Controller Exists Before Creating a Scene
Merge pull request #269 from krkeegan/fix_issue_230

Fix Nabble Links in MailList Page
Merge remote-tracking branch 'upstream/master'
Insteon_i2CS_Linking: Clear Awaiting Ack Flag on All-Link-Complete

If flag not cleared, all messages to that device will stall