Added library id as predefined id types.
Renamed scheduling functions for workspace objects: async for tasks executing in an executor, schedule for work queue tasks;
WorkQueue can now take tasks through the call operator.
Factorized async scheduling implementation into a template function to simplify workspace code.
Also made workspace use the pimpl idiom.
Added an explicitly limited proxy for event dispatchers so that users can only connect, not use dispatching.
Refined Workspace API so that user can only connect to events. WorkspaceObject inheritant can do more.