Add Generator class and support code

Generator is intended to be the preferred way to encapsulate Func building in user pipelines. This pull request probably could use more documentation, but the overall design and set of tests is solid enough to begin serious discussion.
This should delete the generator after running it. Currently it's statically linked too, so this fills build/ with lots of large files until the next make clean.

Probably better to make it dynamically linked too.