Symbolic property dimensions
Allowed property dimensions to be specified like ["N+1", "N-M"] where "N" and "M" refer to the dimensions of the instance.
Also cleaned up the code generation and reduced name collisions between internal fields and dimension and property names.