Changed APIs to be more concise, flexible

Now each simple task creation function like cpp_compile and make_executable
perform the emit by 'using up' the context manager aspect of the task.
To get the old 'advanced' behavior, corresponding functions like
cpp_compile_ex and make_executable_ex can still be called.

cpp_compile now accepts either a scalar string, or a list.
cpp_compile_one is now removed as a result.