Add new baseQueue and underlying priority queue code and tests.

baseQueue will be embedded in all range queue implementations.
I think this would be bad practice but wouldn't leak memory exactly. Eventually ranges would reallocate as it grew past the buffer size and then only the relevant part of the slice would be copied to the new array and the old would get freed.