Fix for spurious assert in cv::compareHist

When comparing histograms that look like multi-channel images (e.g a 3D histogram, of 4x4x4 bins, might appear as a CV_32FC4 matrix), cv::compareHist would complain because it was expecting the matrix type() == CV_32F. Now we test matrix depth() == CV_32F instead.
Take account of multi-channel matrices when comparing histograms

Ensure that all channels are considered when comparing multi-channel histograms
Add ocl's good features to track implementation.
Additional notes with this commit:
1. Add cornerHarris_dxdy and cornerMinEigenVal_dxdy to get
the interim dx and dy output of Sobel operator;
2. Add minMax_buf to allow user to reuse buffers in minMax;
3. Fix an error when either min or max pointer fed into minMax is NULL;
4. Corner sorter temporarily uses C++ STL's quick sort. A parallel
 selection sort in OpneCL is contained in the implementation but disabled
due to poor performance at the moment.
5. Accuracy test for ocl gfft.
Fixed include name in OpenCL on OS X
fix pyrLK's mismatch on Intel GPUs
fix Linux build errors
add two samples
remove the images in ocl sample folder
fix hog
add results verification to facedetect and hog samples
A new python sample on grabcut
Bug #2960 : docs about CV_BGR2GRAY
ANDed waitkey result with 0xFF for x64 systems
android -> plarforms/android
Replace the pull request guidelines with a link to the wiki.

I've moved the contents of CONTRIBUTING.md to the wiki (and slightly
expanded it), so the former is no longer required. I've put a link to the
wiki page and a summary in the README.
Fix some OpenCL kernel file build errors on Mac.
Build fixes. Build scrips reorganized.
Fix a bug when pushing pointers of arguments into std::vector.
When argument pointers pushed into an vector and the pointers point to
address on stack, we need to make sure they are valid until kernels are
successfully flushed onto the queue.
revise perf
fix memory leak