Started work on abstract bot interfaces.

This module will provide several interfaces bot objects may use
and which may be required for bot modules to be used. I should have
factored this stuff in ages ago, so we'll have to pause here and
get them done. This is a requirement to prevent the rail_gun and
other modules from becoming too messy or co-dependent on a
specific bot class.