Use guard compat

- update the whole plugin
- add `patterns` parameter to avoid using Guard::Watcher directly (breaks Guardfiles with subpath regexps - see template/Guardfile)
- use Guard::Compat
- add RuboCop
- refactor specs