Use an array of locks instead of an array of *locks
Lock our item in relocate

Again, this is not enough. But we need to do at least this.
Misc. cleanup
Move lock guard implementations to cpp

They've gotten noisy enough to be distracting in the header.
Change the striped locks to recursive mutexes

I believe these are needed since we must hold all locks during all of
resize().
Remove our unused global mutex
REBASEME: move LockGuard
TODO: Comment me
Ensure set is nonempty before first()