Selector API

Work in progress for the Selector API.

- [x] Add full selector interface
 - [x] `String getVariable()` - ('p', 'a', 'e', 'r' in default selectors)
 - [x] `Map<String, String> getArguments()` - get arguments
 - [x] `List<Entity> resolveSelector()` - resolve selector to entities
 - [x] `String asString()` - turn selector into a string
 - [x] `SelectorBuilder builder()` - modification builder
- [x] Change Message.Selector#getContent() to return a Selector
- [x] Change MessageBuilder.Selector#selector() to take a Selector
- [x] Add selector generator
 - [x] Builder for selectors
 - [ ] Other stuff?
- Possible stuff, need comments:
 - Add utilities for parsing commands with selectors
 - Custom selectors by plugins
In all cases it's implicit based on sender. All selectors are based on the sent position. `@p` happens to always match closest, but all selectors need the position, just in case, and it's just not a good idea to store that with the selector.