Added the random access API: iterator - n and iterator -= n
Also added the Offset Difference API
changed the return type of += and -= to self_type