OCL SURF 2.4

Replacement for PR #2442.

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 (`#if defined(HAVE_OPENCV_OCL)`) replace `cv::SURF` with `cv::ocl::SURF_OCL` (currently it's commented out by `&& 0` to prevent failures).
3. The default `cv::ocl::SURF_OCL` constructor parameters have been changed to match `cv::SURF`.

Several accuracy tests and several perf tests fail.