Added the functions directory to gitignore.
Bug fix.

The way `execute.py` was written, if two methods with the same name but
different methargs were used, the results would all be overwritten in a
single dictionary entry. Note that jug would still run everything
because `jug-execute.py` is written such that any subdirectory with a
`config.yaml` file is executed.

The simple modification here is that the result dictionary now uses the
subdirectory name, i.e., config file key for that particular method,
rather than the method name itself. It is therefore the responsibility
of the user to define a name or label for the particular method
configuration. This is not the most automatic way to do this but I think
it is the most expressive and later this label can also be used in
plots.
Change to replicate making it easier to delete and rerun.

With this change, one can simply delete a method's subdirectory and
rerun the `replicate.py` script on the experiment directory. The
script will recreate clean subdirectories in place of the ones that
were deleted. For all other subdirectories, the script will run
until the seed subdirectory, where existence is checked.

Note however that this is also a good way to increase the number of
repetitions of an experiment while keeping all existing, executed
runs untouched.

Finally, note that we could have left `shutil.copytree()` throw an
exception which would be caught by the try-except clause but this
would cause problems if the behaviour of `shutil.copytree()`
changed at any point in the future.