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.