#679 PLCgen: Move timer variable + block instance creation to code storage
Readable by commit, except for the 2nd to last commit that fixes state prefix text of timer variables since timer block instances are not in state.
Split the generic PlcVariable, PlcFuncDescription and PlcFuncAppl classes into more specific classes, and added an abstract baseclass for each.
Function block instance variables are both variable and function, where the latter also needs the former so it has a cyclic connection. As you cannot instantiate 2 objects at the same time, PLC code storage knows about state variables prefixes.