Option mutation methods should return self
Support getting (but not yet using) snapshots
Add prev() to iterator