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
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
changes md5 module for more efficient md5hashing