Add hero:get_state() and hero:on_state_changed() (fix #207).