Making start, mid and end iterators.
Replacing Range with real C++ iterator range.
Removing BinaryFirst / BinaryLast wrappers.
Use size_t and ssize_t.