Added `ignoreStates` to controls which manages when DOM event handlers are not executed

- Added `ignoreStates` logic in `triggerDOMEvent` in `controlHelper`
- `Control` should ignore `disabled` state
- `InputControl` should ignore `disabled` and `readOnly` state
Unfied state management

- `addState` and `removeState` calls `setProperties` to ensure state
property in sync
- `repaint` delegates known state properties to `addState` and
`removeState` calls
- `setProperties` can reject same value update to prevent dead loop
between `addState` and `setProperties`