Add support for frames with different lengths.
Encapsulate each Light \ Fan \ Rumble into a Frame class, which holds shared information (frame length and if it's repeatable).  Port defaults to new structure.

also removed version - I have no intention of supporting xml versioning!