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
removed ogl::Texture2D support from InputArray
added CudaMem support to Input/Output arrays
renamed gpu headers (made it more consistent)
removed obsolete DevMem2D class
added Stream support to ogl::Buffer
moved inline implementation to separate file
moved GpuMat implementation to separate file
refactored GpuMat:

* switch to InputArray/OutputArray
* add Stream support
new implementation for GpuMat::setTo (without constant memory)
refactored CudaMem (now alloc type assign only in constructor)
refactored gpu::Stream (minor fixes)
refactored gpu info structures (TargetArchs and DeviceInfo)

now DeviceInfo provides full information about device (from cudaDeviceProp)
added Event class (wrapper for cudaEvent)
made createContinuous & ensureSizeIsEnough generic (OutputArray support)
used cudaMalloc for 1-row or 1-column matrix instead of cudaMallocPitch
renamed gpu_private.hpp to private.gpu.hpp
fixing Java wrapper for mixChannels
'dst' should be treated as an input arg (epilog not needed)
Merge pull request #856 from ericgreveson:master