Test behavior instead of implementation details

# Improved "smoke test"

The new test suite for the parser decouples itself from the format of the returned AST. This is closer to the intention of testing behavior rather than implementation details.

The old test suite tested against the existence of `:program` in the returned data structure. This simply tests whether the parsing succeeded.

NOTE: This does not imply that we should refrain from ever testing the AST produced by the parser. The basic "does it work at all" smoke test suite is just not the place.