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
As this is in the `Selector` interface, the name `resolve` should be enough and will look cleaner in code, for example
`selector.resolveSelector(player.getLocation())` vs. `selector.resolve(player.getLocation())`. You can see what it is doing in both examples, so adding selector in the method name is pretty much redundant.