Made state changes safer by using request/return

The Hero's state machine change mechanism was dangerous if you change
state in the middle of a method but forget to return immediately because
the calling object is destroyed instantly... which is bad. Now to change
states you're supposed to request a state change and then return the
correct "state change action" from your update function. This allows the
"state machine mechanism" to handle the transition.
Taking Hero by ref instead of pointer

More idiot-proofing. Makes interface more like ShootingState and
eliminates the possibility that hero could be null (and prevents
deletion).
Replaced std::cout with HIKARI_LOG statements

Cleaning up Hero some more, want to get rid of std::cout calls.