Bunch of refactoring. Rely on Haml::Parser internals instead of trying to duplicate effort here.

Still to do, in @FIXME tests:

- Interpolation
- Filters, comments, etc?