REFACTOR: issue #27 and clean up function call

For some reason I don't remember every target algorithm call started
with a call to python which obviously makes no sense if the target
algorithm is not written in python. I removed this and all code
assuming that the target algorithm is in python and in return added
two callbacks, one before the optimizer is called and one afterwards.
These callbacks can now be used to check if the function is there,
if all dependencies are istalled or delete files after the optimization
...

Right now there are no benchmarks which can make use of this, so the
feature is not tested at all.