multithreaded pmNewContext: tweak locks and errors
multithreaded pmNewContext: tweak locks and errors

Eagle-eyed brolley found a few places where PM_UNLOCKs mismatched
PM_LOCKs in the new code.  Fixed those.  In addition, tweaked
pmReconnectContext, pmDupContext, pmDestroyContext, pmUseContext
to more vigorously detect & reject FREE/INIT state contexts.

adfernandes/pcp,adfernandes/pcp,wuliming/pcp,wuliming/pcp,wuliming/pcp,adfernandes/pcp,wuliming/pcp,adfernandes/pcp,adfernandes/pcp,adfernandes/pcp,wuliming/pcp,wuliming/pcp,wuliming/pcp,adfernandes/pcp,adfernandes/pcp,wuliming/pcp