Add surface_matching module.

This is the surface_matching module developed by @tolgabirdal for the GSoC 2014.

Video can be found [here](https://www.youtube.com/watch?v=uFnqLFznuZU)
whenether possible, use cv::Mat or std::vector for dynamically allocated arrays. For standalone dynamically allocated class instances use cv::Ptr&lt;&gt;. make sure your code does not contain new and delete at all.