Logging lock acquire, release and failure

By taking an optional log argument in BasicLock.

Yet to add tests
not using bind - thanks @cyli
tests and @cyli suggessted changes
lint fix
moved logging in seperate function

as it doesn't clutter with normal flow
moved logging lock failure in seperate function

to seperate it away from main code
damm. lint fix again
logging error reason - per @cyli
Merge pull request #31 from rackerlabs/lock_logging

Logging lock acquire, release and failure