New watch package, better and cleaner watchers for lime packages

- Moved watch to a separate package resolves #292 
- Enabled watching directories, we will have less individual watchers
- It's possible now to have multiple subscribers on one file or directory resolves #285
- Enabled watching a file which doesn't exist yet
Why is this needed? I understand that `v` has changed since the first `ed.Watch` call, but having all `Watched` implementors remove/readd itself for no other reason than that something changed is just not practical.