Break powers into a "can use" and "actually use" functions.
Kill off a bunch of redundant power-related code.

Direction-oriented powers had a pair of functions for each direction.
Now they only need a test & a use function.
Upgrade powers are now implemented using a pair of generic functions.