Split Selector expression parsing and evaluation into its own files
Changed the interface to the tokeniser to avoid tokenising the same
characters more than once.