Separate ? and - into special tokens

This does a few things to the strict parser:

- don't allow `?` anywhere in a variable name
- don't allow `-` to start or end a variable name

@dylanahsmith @xthexder 
Nice.  This means we don't have dashes as prefixes or suffixes.