Add Earth Mover Distance (EMD) code.

Add code provided with the paper [1] at the web site [2] and link it with the
EMD test suite. This is a preliminary step to gradually add functionality to
vigra::earthMoverDistance() in vigra/emd/emd.hxx.

[1] Y. Rubner, C. Tomasi, and L. J. Guibas. A Metric for Distributions with
   Applications to Image Databases. Proceedings of the 1998 IEEE International
   Conference on Computer Vision, Bombay, India, January 1998, pp. 59-66.

[2] http://robotics.stanford.edu/~rubner/emd/default.htm
Make git ignore ctags index files and vim swap files.
Add example 2 from Rubner, Tomasi, Guibas code as test case for EMD.

Two examples are providd in [1]. This patch adds the test case in
example2.c from [1] as a unittest for Earth Movers Distance (EMD) function
using the original code from [1].

[1] http://robotics.stanford.edu/~rubner/emd/default.htm

Since C++ does not allow nested function definitions and static members for
local classes, the distance function is added as a static method in the
EarthMoverDistanceTest class. Eventually the distance method should be
moved to a functor.
EMD: Add checks for empty input output. Use vigra_fail() instead of exit().

The source code for Earth Movers Distance (EMD) added from [1] uses exit()
to bail out in case of an error. This patch replaces the exit() calls by
vigra_fail().

In order to make C++ facilities available, to use vigra's error handling
for instance, rename test/emd/emd.{c,h} to cxx and hxx.
Fix error condition on large signatures in emd().

Error condition to verify input signatures are within predefined limits for
the emd() function was broken, due to careless copying between functions.
Fix the precondition checks and add tests.
Make emd() raise errors if input is a signature filled with zeroes.

A signature filled with zeroes is equivalent to an empty signature. Raise
an error for this case too.

Add tests for this behavior.
Start adding randomized tests for emd().

- Add function to generate random signatures as input for Earth Movers
  Distance (EMD) function.
- Test emd() on randomly generated identical input - output pairs.
- Fix error tolerance on checkFlowProperties().
Add randomized tests to check if emd() is symmetric.

For signatures with the same total weight, Earth Movers Distance (EMD)
defines a metric. Using randomly generated input - output signatures s1 and
s2, we test that emd(s1, s2) == emd(s2, s1) and the size of the flows in
both directions is the same.
Add more test cases for Earth Movers Distance function emd().

If the source or target signature contains only a single bin, the EMD can
be computed easily. Add automated  tests to the emd() function, using
randomly generated singleton signatures and signatures with many bins.
Add random tests to check if Earth Movers Distance is invariant under scaling.

EMD is already scaled with respect to the total weight, so multiplying the
source and target weights by a constant factor should not change the EMD.