refactored VideoWriter class (convert it to abstract interface)
refactored VideoReader (convert it to abstract interface)

also refactored VideoSource interface (made it simplier, now it has only 2 abstract methods)
switched to Input/Output Array in gpu::add
switched to Input/Output Array in gpu::subtract
added arithm_op function to reduce code duplication
switched to Input/Output Array in gpu::multiply
switched to Input/Output Array in gpu::divide
switched to Input/Output Array in gpu::absdiff
switched to Input/Output Array in abs, sqr, sqrt, exp, log, pow
switched to Input/Output Array in gpu::compare
switched to Input/Output Array in bitwise logical operations
switched to Input/Output Array in shift operations
switched to Input/Output Array in min/max operations
switched to Input/Output Array in gpu::addWeighted
switched to Input/Output Array in gpu::threshold
switched to Input/Output Array in cart<->polar operations
switched to Input/Output Array in split/merge operations
switched to Input/Output Array in transpose/flip operations
refactored gpu::LUT function:

* converted it to Algorithm, because implementation uses inner buffers and
  requires preprocessing step
* new implementation splits preprocessing and transform,
  what is more effecient
* old API still can be used for source compatibility (marked as deprecated)
switched to Input/Output Array in gpu::copyMakeBorder