Made ios hideKeyboard function more robust; Fix for #2930

I wasn't able to get all of @bootstraponline's suggestions implemented, namely this little bit:
```
 var key = au.mainApp().keyboard().buttons()['<somekeyname>']
if (key.isNil()) {
var startY = au.mainApp().keyboard().rect().origin.y - 10;
var endY = au.mainWindow().rect().size.height - 10;
au.flickApp(0, startY, 0, endY);
} else {
key.tap();
}
``` 
Whenever I provided a bogus button name, I'd get a 'selenium failed to find the element' error.  I spent some time debugging it, but after talking to @jlipps, we decided to stop for now with the work I confirmed was passing tests.  We can create a ticket to get this final piece working if we need to.
Rather than proxying a large blob of JavaScript, it's better to fix this in [appium-uiauto](https://github.com/appium/appium-uiauto/blob/d4cd13fa315f8369345c2418837e465daee7f85c/uiauto/lib/mechanic-ext/keyboard-ext.js#L49).