Redesigned ButtonHelper as AgentButtonListener, created CombinationAgentButtonListener

Redesigned ButtonHelper as AgentButtonListener, made it more flexible and disposable.
Then created CombinationAgentButtonListener, which uses AgentButtonListener, to detect combinations of button presses.
Also, fixed a bug with ButtonHelper where it wouldn't fire the OnButtonPress event for the initial button press.