Start rewrite for thread safety, automatic stale element resolution

This is a huge refactoring motivated by:
- Wanting to move away from unnecessary dynamic proxies
- Needing thread safe access to driver
- Needing to automatically refind elements if they are stale
- Needing to have targeted drivers and elements
- Needing to add locator information to toString (not done yet, but now
  possible)

It works by creating various implementations of WebElement and WebDriver
that accomplish each of those above needs (more or less). This allows
each need to be focused and individually testable. On the downside, the
real driver is heavily nested, something like:

ThreadedWebDriver
  - driver: ForwardingTargetedWebDriver
    - driver: RefindingWebDriver
      - driver: FirefoxDriver -- real impl

Likewise with WebElements:

ThreadedWebElement
  - element: ForwardingTargetedWebElement
    - element: RefindingWebElement
      - element: RemoteWebElement -- real impl

On the plus side, none of those implementations have to know about any
other. Care must be taken in wiring them up the right way, however.

As of now, not everything is completely tested or verified, but the
fundamentals work.

Known issues:
- Lists of elements are not refinding. Not sure if it's possible.
  - Could/should at least create refinding element if list size == 1
  - Could use javascript to associate each element in the list
    with xpath, and use that to relook up individual elements, but this
    is a little scary.
Implement Findable instead of own isPresent
Remove ElementFactory interface and implementations

No longer necessary since creating targeted elements does not have its
own API (the driver just does it). This means we can just use the
ElementConstructorMap directly instead, vastly simplifying a good chunk
of code.
Remove ElementFactory imports
Make unit tests compile, updates still needed
Remove refindingElements method which did not actually return refinding list
Pull up common threaded code to abstract base class
Rename ForwardingTargetedWebElement
Fill out sensible remainder of Threaded* driver interactions
Update javadoc