RFC position code

This is a stab at the position code. Any feedback welcome.

I need to at least clean it up and add more tests. Just want to make sure it's going down the right track.
Think I need to turn these Iterable into Seq. I've already been stung by an Iterable that was backed by a Set. Mapping over it removes duplicates from the map operation, which is a bit surprising if you didn't know you had a Set.