Deciding on final interface for enums and dropping SDL bit

There seems to a ton of issues with cancelling the watchers when pushing
in the watch callback, in that they don't get cancelled but are instead
called again with invalid data. The callback method does seem to work
fine if we push events from the callback though, so it's just very
strange stuff. Either way, I don't really want to spend all this time
debugging for something that I can do but have managed to screw up in
this implementation so I'm only going to support the callback method.
It's more generic anyways I guess.