Add new device and automation capabilities, deprecate old caps

Added deprecation warning for older style caps.  Warnings are output
once only for a given function or capability.  A final trailing log
message is released saying there were deprecations.

Busted unit tests into smaller tests

Capabilities are now an object, created by passing the capabilities
to Capabilities.  Properties on that object are copied into the Capabilities object so the API is identical.

Store the value of platformVersion as version.
Don't wrap the done callback in main.js
Add dependency status badge
adding npm submodules and scripts
use actual ios sdk for reset.sh instead of hard-coding it
don't quarantine working tests
if plist base dirs don't exist, create them (fix loc services issues)
bugfix, context was wrong
Added timeout to uninstallApk
test fixes
don't ever use sudo to reinstall npm modules
add process arguments for ios specific e.g usage
        capability[:processArguments] = "forceLogout"
Making sure cwd is appium install dir
Update troubleshooting.md
Default to mercy on iOS
point out that locationServicesEnabled cap requires bundleId
ensure we get a decent error message if someone uses locationServicesAuthorized with no bundleId
actually clear out commandTimeout in between sessions so we don't start the timer while a new session is loading the app
add some logging to make it easier to follow ios startup flow
Remove Extra CB

* remove extra callback...

Fix #2044