Fix a copy & paste error in README
Initial striped locking implementation

Tests do not pass yet.
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
Initially lock current bucket in relocate()
Ensure set is nonempty before first()
Use a GlobalLockGuard in relocate()

Simply locking the single corresponding lock is not enough, since
GlobalLockGuard only looks at locks[0] and completely ignores locks[1].
Ensure resize() isn't called spuriously
Ensure a bucket always maps to same lock
Tweak make bench target

First of all, pass the path to the built library so it actually works.
Furthermore, don't clean breach (it's unnecessary since we use a shared
lib).