Insteon: Change Hopcount Calculation to a Moving Average

When I created the current hopcount calculation, I opted to use the highest count over the past 20 reported figures as the hopcount.  This often resulted in a higher than necessary hopcount.

@mstovenour modified that original code to use a running average.  After significant testing (both real world and using the new stress test) it is clear that using a running average results in a more reliable network.

**Of note**, the hopcount system has always relied on the hopcounts of incoming messages to determine the proper outgoing hopcount.  I have at least two devices on my network in which the hopcounts are highly asynchronous.  That is, where the outgoing and incoming hopcounts are very different.  If you have one of these instances, you should consider using the **min_hops()** and **max_hops()** routines for that device.