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
@gratimax said he preferred `asString()` here on IRC, so I'm not sure which one would be better. I don't care either way.