added docs, and made a bunch of other changes

made a number of out-of-scope changes, but just merging them all in.

Major change is the adjustment of the initialization variable definition. Now you define init_vars and init_fixed_vars when defining a class to allow it to instantiate the vars and fixed_vars object on __init__. This allows the variables to remain state variables, and bypasses the whole vars method being reserved (this is still taken in the fileDecoder/messageDecoder's variable object internally. That needs to be changed in a future pull.)