Pick centers in KMeans++ with a probability proportional to their distance^2, instead of simple distance, to previous centers
Apply to KMeansIndex KMeanspp the same modification as in HierarchicalClusteringIndex
As some processed distances are already ^2, use template to select whether or not we have to ^2 in KMeanspp
Move templates in dist.h in order to share them between KMeansIndex and HierarchicalClusteringIndex classes.
When a cluster is empty for KMeans, it's better to give it the point from another cluster j that is the furthest one from center j.
Update system.cpp

Add native C++ support
Update CMakeLists.txt

WinRT native C++ support allowing building of static libraries

Update CMakeLists.txt

Update OpenCVCRTLinkage.cmake

Update OpenCVCRTLinkage.cmake
fixed a buffer overrun of ocl canny

the `map` buffer does not have the same size with CUDA and index starts at [1, 1] instead of [0, 0].
CUDA dependency in nonfree nodule removed. OpenCV.mk generation fixed.
Merge pull request #2037 from GregoryMorse:patch-2
Merge pull request #2074 from asmorkalov:android_nonfree_cuda
Merge pull request #2036 from GregoryMorse:patch-1
fixed warning [-Wempty-body]
Merge pull request #2072 from pengx17:patch-3
dynamicuda became private module.
Bugfix for DeviceInfoFuncTable in dynamicuda amd core modules.
Merge pull request #2078 from ilya-lavrenov:warn
disabled GEMM test if library was built without CUBLAS
disable 2 problematic tests
increase thresholds for some tests