Move file unwatching in old-style worker out of for-loop. Refs #139

Each worker has a `self._file_map` attribute which is a mapping of file ids to file data. When retrieving lines or checking on the status of the file, we use `iteritems()` which gives us a generator as opposed to a copy such as with `items()`. This generator allows us to iterate over the files without having issues where the file handle may open several times or other random Python issues.

Using a generator also means that the set that we are iterating over should not change mid-iteration, which it does if a file is unwatched. To circumvent this, we should use a separate list to keep track of files we need to unwatch or rewatch, and do it out of band.

We should also take care to catch `RuntimeError` which may arise when closing the Worker out of band - such as in the `cleanup` step of the worker dispatcher - but nowhere else.

This should fix issues where logrotate suddenly causes files to disappear for a time and beaver tries to tail the file at the exact time it is being recreated.