Finally fixed that damned Input triggered bug!

1. key_hold_state returns a double, we tried to cast it to a mrb_int
This was most likely due to the original implementation being hold_counts rather than held time
2. held_at was reset each time, this defeats the purpose of having it.
3. Fixed Mouse and Keyboard ::triggered?
Cache::branch now expects a Hash or Proc as the return from its yield
State got a neat debug upgrade.