properly handle symbol iteration in the absence of upto

* Also return self when done iterating
convert range tests to use each directly instead of through map