Rationalised pointer use
Rationalised pointer use

Made newState() and state<Foo> methods consistent in pointer usage.
Also added several states to newState().  Also added boilerplate for
ConditionalExpression (still needs filling out).

google/CodeCity,google/CodeCity,google/CodeCity,NeilFraser/CodeCity,NeilFraser/CodeCity,NeilFraser/CodeCity,google/CodeCity,NeilFraser/CodeCity