ENH Increased flexibility in Function interface

This should allow for more flexibility in using external Python functions in a Workflow. It allows you to provide a list of imports to Function so that functions that do not contain all imports within their body will run.

This is a relatively small change, but I don't feel like I full understand the motivation for the current constraints on how Function code works, so please check this to make sure I haven't violated those constraints. (It is tested, but not in the context of execution over a distributed system).

I still don't think this is ideal -- it would be best for a Node to infer what namespace elements it needs and deal with them itself -- but I believe it is a good improvement over the current requirements of the Function code.