OCL SURF 2.4

*DO NOT MERGE*

this PR is created to prove that OCL SURF in 2.4 gives results quite different from the CPU version.
How is it proved?
1. the class cv::ocl::SURF_OCL is slightly refactored (without touching implementation) so that it's derived from Feature2D and implements all its virtual methods. After this refactoring cv::ocl::SURF_OCL can be used as dropout replacement for SURF.
2. In the tests for cv::SURF we conditionally (#ifdef HAVE_OPENCV_OCL) replace cv::SURF with cv::ocl::SURF_OCL.
3. The default cv::ocl::SURF_OCL constructor parameters have been changed to match cv::SURF.

it looks like several accuracy tests and several perf tests fail.