support "impasse" keyword

`impasse` should work wherever `state` does. Change its representation to
an enum instead of a boolean, which only supported `state` or no `state`.
This required changing method signatures in several places. Add tests for
this functionality.
capitalize enum members

Members of an enum are constants, so capitalize them and use snake
case.
removed unneeded variable

This was no longer needed after the conversion to StateDeclaration.
parse productions with unbound variables

Productions with unbound variables cause Soar to warn (or even crash,
as I found out today:
https://code.google.com/p/soar/issues/detail?id=161), but they should
still parse. Add code to parse, and add/reorganize tests for condition
structure.
add tests for variable string matching

Test the tokenization of both good and bad variable names.
test attribute structures in LHS and RHS

No parser editing needed; just tests.
add int tests

Add parsing tests for positive/negative integers.
test/simplify float parsing

Add tests for correctly parsing floating point numbers. Simplify the
token declarations a little bit.