Drone states

I've updated the SearchDrone to use AI states. There are a good few
problems to work out, such as how events are tied to the states without
swathes of daisy-chaining.
Everything is a lot more readable now. Except for the HackDrone. Don't
look at that.