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.
Insteon_i2CS_Linking: Add Success_Callback to Extended Messages
Insteon_i2CS_Linking: Clear Awaiting Ack Flag on All-Link-Complete

If flag not cleared, all messages to that device will stall
Merge pull request #265 from krkeegan/insteon_i2cs_linking

Insteon:  Add Link_to_Interface for I2CS Devices