Skeleton of support for variables
Actually split SoundLaw and Variable types

they should be two separate types since they do fundamentally
different things in a rule application
Added one more test rule