Primal-Dual algorithm for denoising

This is an implementation of primal-dual algorithm, based on the C++
source code by Vadim Pisarevsky, based on earlier Python code by Alexander Mordvintsev.
It was extended to handle the denoising
based on multiple observations. It also contains documentation and
tests. Again, this is done with the support of Google under the Google Summer of Code 2013 initiative. Mentor: Vadim Pisarevsky.

I would like the reviewers to notice the following things.
1. The tests are not perfect. First, tests require the image lena.jpg to be in the build directory. I'm not aware of any way to ensure this automatically as a part of build process.
2. Tests are a bit too strict in the sense that they assume something about the behavior of opencv RNG random number generator. That is, change in it will break the tests.
3. The original code by Vadim Pisarevsky was able to denoise the image based on only one observation. While the current implementation is an extension that handles multiple observation case. Although the latter one may trivially be also applied if we have only one observation it should be noted that it will give DIFFERENT result than the original Vadim Pisarevsky's code. And I don't know which one is better...
4. Documentation is a bit dumb. Critical comments are appreciated!