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.
this is the main robustification--a synchronous wait.  The script checks every 100ms to see if the keyboard has hidden or 3 seconds has elapsed, whichever comes first.  In general, though, this loop exits in just a couple iterations.