Text API

@Minecrell and I have been working on designing the text API. Bleeding contributions are at [LapisBlue/SpongeAPI/feature/chat](https://github.com/LapisBlue/SpongeAPI/tree/feature/chat) where we both have push access and I regularly update [SpongePowered/SpongeAPI/feature/chat](https://github.com/LapisBlue/SpongeAPI/tree/feature/chat) with the latest changes.

Here's what we still have to do:

__Javadocs__
(all start from org.spongepowered.api as root)
- [x] text.action.TextActions
- [x] text.action.TextActionFactory
- [x] text.action.NullTextActionFactory (inherit)
- [x] text.chat.ChatPositions
- [x] text.chat.ChatPositionFactory
- [x] text.chat.NullChatPositionFactory (inherit)
- [x] text.chat.TextFormatFactory
- [x] text.chat.NullTextFormatFactory (inherit)
- [x] text.action.TextFormats/TextStyles (decide name too)
- [x] text.message.MessageBuilder
- [x] text.message.MessageFactory
- [x] text.message.NullMessageFactory
- [x] text.title.TitleFactory
- [x] text.title.NullTitleFactory
- [x] text.translation.TranslationFactory
- [x] text.translations.NullTranslationFactory

__General__
- [x] code style everywhere (intellij format)
- [ ] squash commits
In most cases it should, however, we need methods like `setContent(T content)` which are parameterized on the type of Message and not MessageBuilder. It be possibly to have a second MessageBuilder type parameter like `MessageBuilder<T, R extends Message>`.