Added defwatch to have different types for different kinds of watchers.
Moved Handlers into Protocols; renamed them.