Add generic lock_guard class
Add generic lock_guard class

This generalizes scoped_acquire to work for any "lockable" object
(including spinlocks and semaphores).  It's also movable.

bowlofstew/sv6,aclements/sv6,aclements/sv6,bowlofstew/sv6,bowlofstew/sv6,bowlofstew/sv6,aclements/sv6,aclements/sv6,aclements/sv6,bowlofstew/sv6