Actually create torrent files, slight refactor

We actually can overload the same port for using torrent serving +
tracking, we can just decide which action to take by URL. This saves
complexity in the implementation.

This also refactors Tracker to be at the very top of the chain, and it
contains some Watchers. The latter has no reference back to the former.

Finally, this implements torrent file creation. Tested and seems to
generate correct torrent files for a given source file.