switchTo().frame + executeScript breaks context

Steps to reproduce:

1. Switch to a subframe using `driver.switchTo().frame("a")`
2. Cast the driver to a JavascriptExecutor, and call the executeScript
   method.
3. Observe that the called function runs in the context of the top-level
   document instead of the frame identified by "a".
4. Further, observe that any calls to findElement operate on the wrong
   context.

Summarized: Calling executeScript() changes the frame context to _top.