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
Applied patch from #9127 to fix lazy_add_vertex; fixes #9127

git-svn-id: http://svn.boost.org/svn/boost/trunk@86515 b8fc166d-592f-0410-95f2-cb63ce0dd405
Allow Boost.Math to be used without RTTI.
Fixes #9317.

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