Performance improvements on Element.findElement()

Made multiple performance improvements:
- Allow users to specify locator type upon construction of a widget (XPath, ID, Name, etc) so that we can directly retrieve the By locator
- Store WebElement object for reuse
- Store By locator for reuse

This is a fix for #64.
We should be controlling which locator type webdriver will use to find elements within EWD. We shouldn't need to explicitly set the locator type unless we wish to in EWD.

My suggestion would be for the findElement to still find by all the different types, but flag upon discovery with a certain type and utilize that type of find until one is not found which would then check the others and throw an exception if none are found. And that flag for which type to use should be explicitly set if wanted.