Use single critical section/mutex implementation across the library

* remove all duplicating implementations of mutex/critical section
* rename cv::Mutex to cv::CriticalSection to explicitly show that this class
  must not be used for long-living locks (not a real removal because of
  backward compatibility requirement)
* forbid copying of cv::CriticalSection objects
* deprecate cv::AutoLock class and replace it with
  cv::CriticalSection::ScopedLock which correctly names the synchronization
  pattern
* Move Mutex implementation to parallel.cpp