Primal-dual algorithm

This is an implementation of primal-dual algorithm, based on the C++
source code by Vadim Pisarevsky. It was extended to handle the denoising
based on multiple observations. It also contains documentation and
tests.
Minor fixes

As the opencv's build-bot did not want to compile this revision, I had
to do some changes. In particular,
1) Removed unsigned int vs int comparisons, that were treated as errors
2) Removed unused variables and functions
3) Removed functions without previous declaration
4) Fixed whitespaces
Minor fixes

Fixed integer vs unsigned integer comparison in .cpp test source and
trailing whitespaces in source code
Eliminate use of 32-bit floating pt type

Replace all "float" by "double" (64-bit) to avoid "lose precision"
warnings.
Merge pull request #1426 from nailbiter:optimPD