Domain model and visitor pattern

This transforms the parse tree into a real domain model (closes #2) and implements the visitor pattern to allow generators to walk through it.

Procedural note: I'd love to get more people involved in this project, so I'm going to wait to merge this until I get some feedback on it. If you have time, I'd love a review of the code.