Simplifying object handling code in IE driver.

COM objects are now correctly referenced everywhere via smart pointers,
and use of some aliased types is now replaced by the C++ primitives.
Refactoring IE element finder to make clearer when Sizzle is used.

Previously, it was not as easy to determine from IEDriverServer.exe logs
when Sizzle was being used for finding elements by CSS selector. It is now
explicitly called out and logged. Also, it now insures that the automation
atoms are being used when Sizzle is not necessary.
Correcting type warning in x64 compilation
Updating IE prebuilts
adding ability to pass Throwable to creating SessionNotCreatedException ~ desired by ios-driver
fixing naming / compilation issue
Update the atoms used in the android APK, recompile and update the prebuilt android app.
Clean up some frame handling code in the AndroidDriver to give a clearer exception on the local end
Allow users to specify a custom location for Safari's data directory using the
"safari.dataDir" capability.

Fixes issue 5293.
Ruby: be less strict about returned capabilities.
Handle responses from servers that do not specify the content-type.
Make StringIO import 2.7 friendly
Fix ./go //javascript/webdriver:webdriver build

Fixes issue 5418.
Ignoring the BuildConfig from android as it's a generated file
The OpenJDK 7 has a maximum string length for constants that the atoms trip over, though the Oracle JDK is fine. Avoid this by using a StringBuilder to dynamically create the atom constants.
Adding phantomjsdriver.log to the ignore list
Removing end-of-line in the end of the file
Implementing pageLoadTimeout in HtmlUnitDriver
Fixing illegal negative timeout values for HtmlUnitDriver, zero means
infinite wait
Updating HtmlUnit to 2.12 (and cssparser to 0.9.9)