Compiler support for multiple worker contexts.

This involved refactoring the logic around execution context and targets to be more flexible.  In the process it's also become simpler and clearer.

git-svn-id: https://svn.mcs.anl.gov/repos/exm/sfw/stc/trunk@13429 dc4e9af1-7f46-4ead-bba6-71afc04862de
Switch to using singular for coaster where possible, matching changes to C client code

git-svn-id: https://svn.mcs.anl.gov/repos/exm/sfw/stc/trunk@13431 dc4e9af1-7f46-4ead-bba6-71afc04862de