PLY Parser

Replaces the SPARK parser with one using PLY.

We don't rely on the inbuilt definitions for parser precedence but this is something to consider.