[IOS] Fix keyboard not show bug if it was canceled before it did show.
On ios4 with ipad, found that the ios will not send the keyboard did hide
notifaction if the keyboard was canceled before the keyboard did show.
So fix this by trace the keyboard show state, and delay deactivate action
until keyboard did show.
Move the reset code for finished event into ui thread.
when we are using bluetooth keyboard, there is chance the doDeactivate
method be called before the finished event reset in xbmc thread.
[atv2] - make hooking more clean and safe by checking the selector of the class before hooking
[atv2] - fix XBMC is getting 100% transparent when bluetooth keyboard is detected. (keyboard detection triggers an ios popup overlay which influences with our opengl layer when it vanishes). Since we are hooking now anyways - we just hook into that popupmanager and suppress any popups during XBMC runtime.
Merge pull request #2271 from ulion/ios_fix_keyboard_not_show_if_was_canceled_before_show

[IOS] Fix native keyboard not show if was canceled before it did show