Reverse iterators

Both bidirectional and random access iterators have corresponding reverse iterator adaptors that they iterate through.