Initial iterator support

Still needs some work, but the basics are there :)

Closes #32