yet another attempt to refactor features2d; the first commit, features2d does not even compile
Implementation detector and selector for IPP and OpenCL;

IPP can be switched on and off on runtime;

Optional implementation collector was added (switched off by default in CMake). Gathers data of implementation used in functions and report this info through performance TS;

TS modifications for implementations control;
OpenCV with the refactored features2d compiles! contrib is broken for now; the tests are not tried yet
Applied proposed fix
fixes
Merge pull request #3270 from boaz001:patch-1
Merge pull request #3338 from ilya-lavrenov:ios_fixes
now all the samples and opencv_contrib compile!
fixed several test failures; currently 9 out of 73 tests fail
Merge pull request #3332 from lupustr3:pvlasov/implementation_detector
all the tests now pass except for MSER
ok; all the tests now pass
fixed opencv_java build
trying to fix strange compiler bug
fixed some more compile errors and test failures
fixed error in OpenCL ORB
trying to resolve the merge conflict
yet another attempt to refactor features2d; the first commit, features2d does not even compile
OpenCV with the refactored features2d compiles! contrib is broken for now; the tests are not tried yet
now all the samples and opencv_contrib compile!