created FunctionPrototype and change FunctionManager to store FunctionPrototypes rather than Functions. Function GUI plugin now uses FunctionPrototypes to generate and run function objects. Progress is now tracked correctly when multiple instances of the same function are running simultaneously as a result.