Insteon: More Adjustments to is_duplicate_received

The message window is now calculated based on some basis in reality.  The message window is the amount of time during which no proper message should be received.

This depends on whether the message needs to be ACKed or not.

If a message needs to be ACKed, then no message should be received from the device until:
- All hops left expire
- Max hops + 1 elapses for an ACK to be received
- Max hops - less hops left for a new request to be sent

If no ACK is required then no message should be received from the device until:
-All hops left expire
-Max hops for a PLM message to be received by the device
(since MH is more sensitive to false positives in these types of messages, and since when duplicates occur here they normally occur very fast, we are more conservative for these types of messages)
Insteon: Add Time to Allow for ACK to Finish Transmitting

MH already pauses to all hops_left time to expire.

This adds a pause for messages that require ACKs to be sent to devices.  MH doesn't send the ACKs, they are automatically sent by the PLM.  However, anecdotal evidence suggests that the PLM doesn't abide by collision avoidance, ie it seems to permit a message to be sent immediately after an ACK without concern for allowing the ACK hops to complete.
Merge branch 'fix_issue_169' into running_fanlinc