Merge pull request #1636 from jlipps/master

fix #1631
Update iOS mobile reset
adds check for API level; stops test if device is 'android' but API < 17

separates checkApiLevel functionality and cleans up little bits

cleans up the last bits
Merge pull request #1626 from rockbot/master

adds check for API level; stops test if device is 'android' but API < 17
Merge pull request #1643 from bootstraponline/master

Fix cleanupAppState logging messages
politely informs user that mobile commands don't work in selenium

adds extra test to ensure it's the mobile: error message that's getting sent
refactor instruments and add appium-internal flake support
This commit constitutes a pretty big refactor of the instruments
process handler. It also introduces a server flag, '--backend-retries',
with a default of '3', which specifies how many times Appium will retry
launching instruments before giving up and saying that it crashed or
timed out. This works in concert with launchTimeout, of course.

I think this refactor also fixes some longstanding callback reasoning
errors and maybe some other bugs.

It might also introduce some bugs of its own though :-)
remove retry support from appium test code
since it is now handled in appium itself
clean up instruments pathfinding
remove safari launcher as strategy for safari + sim
Catch SyntaxError exception and log nice error message
Merge pull request #1650 from jlipps/instruments-rearch

Instruments rearch
Merge pull request #1645 from rockbot/master

politely informs user that mobile commands don't work in selenium
Merge pull request #1634 from grz0/master

Catch SyntaxError exception and log nice error message
allow built-in apps to be automated by temporarily moving them
allow setting ios sdk version in tests with IOS_VERSION env var
support automation of safari on ios7
allow safari on ipad to launch correctly as well
changes md5 module for more efficient md5hashing
Small typo 'sessoin' for 'session'