Simplified, refactored and unified (timed_)lock code based on try_lock(). There were several bugs in when handling timeout expirations.

git-svn-id: http://svn.boost.org/svn/boost/trunk@86511 b8fc166d-592f-0410-95f2-cb63ce0dd405
Fixes #9284 ("WaitForSingleObject(mutex) must handle WAIT_ABANDONED")

git-svn-id: http://svn.boost.org/svn/boost/trunk@86512 b8fc166d-592f-0410-95f2-cb63ce0dd405
Updated 1.56 changelog with #9284

git-svn-id: http://svn.boost.org/svn/boost/trunk@86513 b8fc166d-592f-0410-95f2-cb63ce0dd405