changes to the ProgramDotExp

ProgramDotExp is broken. This means that when you try to qualify an operation or obtain a variable from a facility, the compiler will throw some incomprehensible error. This fix completely changes the way how we think of ProgramDotExp, which is now composed of a qualifier and a expression. The qualifier is a facility qualifier and the expression can either be a ProgramParamExp or a VariableExp. 

Note:
This fix might have a big impact on the old VC generator. Needs to monitor this carefully so that no erroneous VCs are generated.