Add Sensors#enemies

This returns the set of enemies visible to an agent, so we can hunt them down.
Train GuardingAgent

This strategy is a basic modification of the `GathererAgent`. The first
optimization is that it tries to build a line in just one direction so boxes
aren't wasted. The second is that is leaves a couple agents at home to protect
the base. It exploits the probability that a `GathererAgent` comes in along a
wall by camping one guy on the spawn point and another at the end of the box
line. In the event that the line is broken, the agent at the end will repair it
and then get back to work.

It performs well against one or two opponents (SW and NE if the `GuardingAgent`
is NW), but has trouble when the third (SW) comes from its blind side into the
middle of the line. It also suffers from being overzealous in chasing an enemy
in the event that the enemy picks a box from the line and runs off.
Add Coordinate#opposite

Convenience function to swap north/south and east/west
Make GuardingAgent work in any corner

It was hardcoded to live in the NW. Now it works in any corner based on the
direction of its `SpawnPoint`.