Changed unlock_all to object destructor and moved internal return
parameters to multiple return values

We can do multiple return values with std::tie
Fixed snapshot_and_lock return

We must use make_tuple, since std::tuple only provides an explicit
constructor.
Cleaned up the tests

Formatted them more consistently, fixed the >80 char lines, and removed
the unused error warnings that would result from using the find(key,
value) method.
Removed -Werror

g++-4.6 throws some spurious unused variable warnings for the
HazardPointer and Lock unsetters I use, but since the warning is
generally useful and doesn't show up in other, more recent compilers, I
don't want to disable the warning altogether.