re-organized compiler support to allow for easier testing, testing new iterator/combiner interface
re-commit using tuple packing
hopefully have forwarding of parameters right.
don't allow templating on mutex type, cleanup source code a bit.
wasn't returning result for optional_last_value