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
The only case I see this being useful is `MessageBuilder<T, Message<T>> build()` so that it can return `Message.Text`, `Message.Score`, etc. However these are just marker interfaces that add no additional behaviour and probably won't in the future, so the second type parameter is unnecessary.