Chat Component API

This adds a API to allow plugins to use the new chat features in 1.7. This also replaces ChatConverter with a system that uses the new components and adds methods to convert them back to the old format. *broadcast* and *sendMessage* now accept components. This is still a work in progress but I have submitted for feedback.

**Todo**
* Add documentation to classes/methods that are missing it
* Add access to components from events
* Translatable components currently don't display in the console or when using toPlainText/toLegacyText (Not sure how to handle this)