Insteon: Enabling Link_To_Interfaces for Child Objects in BaseDevice

Enabled group and data3 determination if not specified.

Based off of Insteon_I2CS_Linking Branch so as not to require a manual merge.  Need to merge that branch first.

Closed #274
Insteon: Remove Unneeded Link_to_Interface Routine in DeviceController

No longer needed as all functions are condensed into BaseDevice link_to_interface function.
Insteon: Fix BaseDevice Unlink_to_Interface for use with Subgroup Objects

Used a similar step method as found in link_to_interface to make the code more readable

Removed DeviceController unlink_to_interface routine as no longer needed
Insteon: Link_to_Interface will add Surrogate Links if they Exist

Surrogate links allow the KPL light buttons to be directly controlled from MH.  In the future other similar surrogates may exist.

The Link_to_Interface routine now syncs these links if a surrogate is defined.

Also cut out the duplicate logic in Link_to_Interface_i2CS and instead sent the callbacks to Link_to_Interface since the functions are the same after the initial link.
Insteon: Delete Surrogate Links in Unlink_to_Interface

The companion function to the recently added feature in Link_to_Interface

Removed root finding code, as _aldb always returns the root object
Merge branch 'master' into fix_issue_274
Merge pull request #275 from krkeegan/fix_issue_274

Insteon: Enabling Link_To_Interfaces for Child Objects in BaseDevice