Split paths into watched and relative

Make every path used in Listen separate from work directory.

This is so ultimately watched directories are truly separate and contain their own config.

Implications:
- every directory could have it's own Record
- Record uses up less memory
- silencer can work more reliably (not "hack" to turn path into relative to watched dir)
- TCP message format is incompatible
- Record distinguishes files from dirs based on existence of `:mtime` field
- Listener config no longer has to be passed down to adapter
- Silencer no longer includes Celluloid overhead
- in the future, Record could be turned on/off for specific directories
- much cleaner debug/output possible (only relative paths)