found a way to add worker state

… but it doesn't feel very Go-like:
this uses asWork() to implement a dynamic cast from Worker to *Work
move all info from Group maps into Work maps
much beter - turning Work and Worker inside out

Work now has a pointer to its enclosing Worker
the asWork hack is gone again, hurray
refactor