Add support for get_engine_version() scan at startup.
Store engine_version in Insteon::BaseObject
Initial code added to Voice::Text

This is an initial attempt to get TTS working on OS X with the default TTS tools included in the OS.
Up to now TTS on OSX required separate code to be enabled under code/common. The idea is to integrate
TTS on OS X into MH just like the unix/windows interface is built.
Merge branch 'master' into i2_aldb_support
Added engine version property to the Insteon base object:  Stored and retrieved with Insteon::BaseObject::engine_version().  Added engine version request to the startup scan.  Cleaned up _is_info_request() so that it returns true for both matching commands.  Added link_cleanup_report=>0x06 to the known insteon message types.
Merge remote-tracking branch 'origin/master' into i2_aldb_support
ALDB_i2 support for scan_link_table and sync_links
--lib/Insteon/AllLinkDatabase.pm
Corrected 'use' statements to eliminate "subroutine xxx redefined" warnings with perl -w.
Added ALDB_i2 functions to support scan_link_table() and _write_link() (for sync links).  Duplicated code from ALDB_i1 for now.  Will refactor code later to combine logic. (will need i1 devices for test)
--lib/Insteon/BaseInsteon.pm
Corrected 'use' statements to eliminate "subroutine xxx redefined" warnings with perl -w.
Added support for reading, storing, and saving engine version
Removed dupilcate state save of level
Added support for read_write_aldb command
--lib/Insteon/Lighting.pm
Modified Insteon::LampLinc to inherit Insteon::DeviceController to support LampLinc with local control buttons
--lib/Insteon/Message.pm
Corrected 'use' statements to eliminate "subroutine xxx redefined" warnings with perl -w.
Modified extended message code to properly parse the extra data
Added support for checksums on extended data with i2CS devices
--lib/Insteon_PLM.pm
Added "use Insteon;" as it was necessary after correcting use statements in other modules.
Added extra level 3 debug for the logic that saves message fragments
Merge branch 'fix_issue_35' into i2_aldb_support
Debuged "sync links" and "sync all links" for i2CS
--lib/Insteon.pm
Added some POD documentation for the functions I studied
Added missing link to interface and unlink from interface tie_event for controllers
Added PLM voice command "initiate linking as controller" to support half-automated i2 device linking
Renamed PLM voice command "show link table to log" to "log links" to match the device voice command.  Compatibility WARNING:  If your code uses the old PLM voice command you will need to change your code to the new command.
Updated get_object to return a match on the base device if there are no matching groups
--lib/Insteon/AllLinkDatabase.pm
Corrected rather nasty "adlb" typos to "aldb" as reported by krkeegan
Added additional state logic to fix "sync links"
Fixed flag logic
Added health=good and inuse=1 properties for PLM aldb
--lib/Insteon/BaseInsteon.pm
Added additional state logic to fix "sync links"
--lib/Insteon/Message.pm
Added logic to ensure message always contains a flag byte even if hop_count==0
--lib/Insteon/MessageDecoder.pm
Renamed user_user_reset to plm_user_reset
--lib/Insteon_PLM.pm
Added support for processing plm_user_reset.  There is no code action associated with the message but it doesn't hang the interface either
For initiate_linking_as_controller changed default group to 01 rather than FF to match how the PLM creates the same links when linking manually
Add check logic in read_write_aldb state machine to ensure the command ack is received from the device before waiting on the read response
get_first_empty_address should return 0 if no addr
The sub add_link expects get_first_empty_address to return 0 if no empty address is found.

This will prevent trying to add an aldb record to the FFFFFFFFFFFFFFF8 address which clearly doesn't exist.  Instead the user will now get a nice error advising them to scan the link table before trying to sync links.
More i2 debugging
Added a few print statements to keep up with the environment at Marc's house :)
Corrected the i2 scan and added more debug output
Merge branch 'master' into i2_aldb_support
Added lots of extra insteon:4 logging to track down a PLM sync issue
Add milliseconds to Message Decoder Output

Messages arrive very very fast.  Adding milliseconds to the print log helps debug what is going on.
fixed sync_links bug that prevented second link from being updated
Rewrote get_first_empty_address() and added logic to prevent failure if there is an undefined entry in the aldb.  Modified add_link so that it doesn't create undefined aldb entries.
Added croak on error that will spit out a stack trace.  This should help me debug issues found by others.
Skip scanning rest of address if aldb_flag shows address not in use

MH dumps addresses not in use already, but continues to send 7 peek messages after discovering the address is not in use.  There is no need for this in the current code.  This should make scanning faster for those of us who add and delete links from our devices often.
Fix typos in fix for issue #46