Added ender portal support (see #325).

Adds awardAchievement variant which only awards the achievement if its
parent has already been awarded. Fixes some desyncs with world switching.
Implemented basic damage functionality, including drowning.
Fixed color wrapping by converting flat messages to json.
Move code for block rotation out of BlockSign (also used for Skulls and Banners)
Initial work on Banners
Use enum instead of hardcoded magic values
(cherry picked from commit b83837e)
UpdateBlockEntityMessage protocol courtesy of @Aaron1101
(cherry picked from commit ea3532b)
Basically everything for Banners. As of yet, untested.
Formatting fixes
Rotate properly, update on placing, and actually save layers to NBT
Base and Patterns now should never be null, and should hopefully save properly
Make UpdateBlockEntityMessage use Lombok
Styles Checked
Fix broken check for NBT data on banner item
Checking with style
Fix saving/sending byte and not integer (causes issues when client sends int)
Update to new Banner API