REFACTOR store timeout ids on elements

Storing timeout ids on controller causes problem of overwriting if
multiple elements are bound to the same event.

Timeout id is now stored on element, so that it is isolated.