Change PeerRepo class into a plain map

Use a plain map to represent PeerRepo, and put this in a separate module. This
makes future expansion a little more convenient. It also is more consistent with
the rest of the code, which avoids declaring new Java classes.
Refactor hesokuri.watching module to be more consistent with code base

- Name module after the object, since the module has functions that all
  revolve around the object: s/watching/watcher
- Stop storing functions inside the object - the :stopper function is now the
  hesokuri.watcher/stop function
- Store the WatcherService object in plain view in the watcher object
Implement "see" module which abbreviates objects in a data structure

This is used now in the web module for dumping the state of the app. This allows
us to include more information in object state without worrying about the time
needed to generate the pretty-printed state. With this module, showing a dump is
much faster and it can include self-nested objects.
Make the watcher object white-box

Stop using anonymous functions and stop hiding arguments to callbacks inside of
closures. This should make the dump more informative and help with debugging. It
has made the code a little more readable and linear.

Additionally, merge the types of watchers so that watchers for dirs and files
look the same. The one for files simply delegates to dirs.