Allow LockAsync to be canceled
Omg what is wrong with me, a boolean? CancellationToken!
Ensure Shutdown can't try to wait on itself
Ignore OperationCanceledException, it's what we wanted
Merge pull request #178 from akavache/nevar-deadlock

Make 100% sure we don't deadlock on exit