Track state for all UserScheme calls
This adds full state tracking for all UserScheme calls. As a result, only the context waiting for any specific call will be notified, rather than all contexts being notified, that are waiting for that scheme (WaitMap).
Additionally, it will be easier to pass more complex state in the future, and implement (most likely necessary) EINTR UserScheme call restarting.