Simple custom elements

Goal with this change is to simplify code around the creation of custom elements, transitioning from the unnecessarily reflection-heavy previous implementation to a simpler, more DRY implementation, with much of the same benefits, for far less code. Closes #14 .

Progress:
- [x] Remove need for custom element factories on `Elements`
- [x] Simplify finding custom elements in `DefaultElementSelection`
- [ ] Remove `withRootLocator` and `withRootElement` API's and implementations (no longer needed)
- [x] Write new abstract base class for custom elements that uses familiar annotations to implement `isDisplayed` and `isPresent` alongside `isLoaded`
- [x] Refactor AbstractView annotation and initialization logic into components
- [x] Update unit tests