Cleanup WebDriver, WebElement, and Alert targetting

Issues I had:

- `TargetedWebDriverFactory` was redundant with `TargetLocator` interface
- `WebDriverAlert` worked differently than Browser and Elements (though you could argue it was simpler if only less consistent)
- `CachingTargetLocator` did not cache an alert target.