OCL: Optimize OpenCL version of StereoBM function

1. Fix problems on NVidia devices.
2. Move some arguments to build options
3. Refactoring some code.

http://ocl.itseez.com/intel/export/perf/pr/3284/report/

check_regression=*OCL*StereoBM*
test_filter=*OCL*StereoBM*
test_modules=calib3d
build_examples=OFF
@vbystricky I see that the same byte read (left[0]-right[0] and left[i]-right[i]) is presented in the loop (for (int i = 0; i < BLOCK_SIZE_Y * BLOCK_SIZE_X / 2; i++)). Is there any chance to make it 4 bytes read? 1 byte read is very inefficient. is it possible to process 4 bytes at once or do something else to avoid 1 byte reading?
@KonstantinMatskevich does it make sense to think about another approach (different calculations with the same result) that will be more relevant for GPU?