Added function decomposeHomographyMat. New files added are homography_decomp.cpp and test_homography_decomp.cpp.
Modified files calib3d.hpp and camera_calibration_and_3d_reconstruction.rst.
Fixed warnings and parameter name mismatches, added #include needed in some platforms.
ocl: added runtime flags for debugging
Build both Python 2 and Python 3 bindings

If both Python 2 and Python 3 are found, then build bindings for both of
them during the build process.  Currently, one version of Python is
detected automatically, and building for the other requires changes the
CMake config.

The largest chunk of this change generalizes OpenCVDetectPython.cmake to
find both a Python 2 and Python 3 version of Python.  Secondly, the
opencv_python module is split into two modules, opencv_python2 and
opencv_python3.  Both are built from the same source. but for different
versions of Python.
cudabgsegm module was not compiling.  Changing all references of opencv2/legacy.hpp to opencv2/cudalegacy.hpp seemed to work.
I'm new at this so it would be good to have someone familiar with the build system confirm the change.
cuda::DisparityBilateralFilter no longer uses constant memory for parameters

Now multiple filters can be used in the same context without stepping on each other.
cdata_weight always positive; fewer multiplications.
Move shared interface to header file rather than repeating.
Move shared interface to header file rather than repeating.
Pass in images and scratch space so that multiple copies can run concurrently.
Constify cuda csbp
No longer use constant memory for image step.
ndisp no longer constant
Pass max_disc_term as kernel parameter.
Change struct with single static function to function.
More constant removal.
Deconstify minimum disparity.
Last of csbp load_constants() gone.
Remove compute_disp()'s use of constant memory.
remove use of constant memory in calc_all_iterations/compute_message/message_per_pixel