* add executeDriverScript route, command, tests
* allow driver scripts to write and collect console logs
* ensure driver script protocol is set to same protocol as driver, and also includes all appium commands
* implement isFeatureEnabled to check for insecure feature
* add tests for isFeatureEnabled
* update feature flag name to match style of other flags
* add ensureFeatureEnabled method for use by other drivers
* move driver script execution into a child process so we can kill it if necessary
* use this.opts.address instead of this.opts.host
* ensure driver script timeout is a number in the child proc as well
* ensure we get webdriverio without issues
* add -image locator strategy and related logic
* use appium-support jimp helper
* handle find multiple elements by image
* update staleness check variable name
* ensure that a settings object always exists so we can rely on global settings always existing too
* only fix template size if user requests it in settings
* add note about implicit wait error handling
* only automatically update image element position if user turns on an appropriate setting
* add setting to control whether we check for image element staleness
* add setting to determine the image element tap strategy (w3c or mjsonwp)
* prefer single quotes
* add setting to turn off screenshot resizing if not desired
* add docstrings (except for cache class which we may not keep)
* address additional review comments
* add better jsdoc arg info
* use lru-cache npm package instead of rolling our own
* use new versino of appium-support
* make sure the lru cache is checking element size correctly
* give better names and tighten up logic around image el tap strategies
* add some unit tests for image elements
* ensure DeviceSettings has a default no-op update method
* check that driver implements action strategies and fall back / throw as appropriate
* finish out image element unit tests
* have basedriver set noop onSettingsUpdate rather than doing it in DeviceSettings
* move route avoidance detection from protocol to driver
* handle proxying actions to downstream drivers during image tap
* tighten up logic for deciding whether to proxy based on presence of image element
* add find by image specs and fix issues that arose in the process
* clean up regexes
* don't try to be smart and proxy actions for drivers; let them set it up themselves to support image elements
* change default match threshold based on experimentation
* export which settings are handled by basedriver so downstream drivers can utilize this information
* make sure to include a duration for the initial pointerMove action
* add docstring to proxyRouteIsAvoided
* Try to fix the destination URL if the upstream and downstream drivers operate different procotols
* detect route name in smarter manner
* Fix command name extraction
* consider the situation where url is equal to the endpoint
* Simplify helper functions
* Refactor command name extraction
* Refactor urls fixing
* Cache downstream procotol
* speed up downstream protocol detection
* Address comments
* Minor tunings
* Before it was throwing immediately which meant we weren't parsing the protocol and weren't showing the proper error responses
* If proxied W3C error doesn't have an error, make it `Unknown Error`