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
some arguments are not strings, I'm not sure if they should be typed