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.
@bryantrobbins Yes, you are correct. My mindset was geared towards more thinking about how much a user will have to do in their own testing and limiting that. Which doesn't make much sense from a design perspective. But we should still consider putting in a default locator type within EWD.

Agreed with splitting this ticket up.