Insteon: Rewrite/Rework/Condense Set Routine Code

This primarily makes the Set Routine code much easier to read and understand.  The old code was very convoluted, contained a lot of unnecessary or unused elements and made multiple confusing callbacks between various packages for no reason.

The new code is significantly more condensed, almost 350 lines have been removed.  The code no longer jumps around through various packages.  I also replaced many of the unique set routines contained inside specific devices (many of which I had added).  It is a bad idea to try and keep the code in multiple separate functions in sync with each other.

The new design should make it much easier to add new objects.

The only real feature that is visible to end users is that linked devices now accurately reflect their dim states.  Previously if you dimmed a switchlinc manually, other switchlincs which were linked to this device would have state of "on" inside MH even though they had been dimmed.  Now these linked devices will reflect their approximate dim state.

This is a substantial change of some very base level code within the Insteon stack.  It is unlikely that I have tested all possible scenarios, so it would be nice if others could test this out and let me know what issues arise.

Incremental step of solving #280