Add Location.getNearbyEntities, Adds BUKKIT-3868

This also adds World.getEntities(Location, x, y, z) - which will be
implemented in a corresponding CB branch.
Add a location-based getEntitiesByClass method

Also return a Collection instead of a List
First draft
More draft
Append a Message to another one
Update SkullMeta to use UUIDs. Adds BUKKIT-5614

Allows skull items to have their owner set by UUID as well as playername.  Changes setOwner() function to attach all profile properties to the skull, including textures.  Without this commit, spawned in skull items have the default texture instead of the texture of the owner.
Prevent modifying parts
Make Part mutable, add some methods
Implement new API
Move hover data outside of Part, move inner classes outside of Message
Add test material & little modifications
Reorganize imports
Change return annotations and "cls" variable
Add equals() and hashCode() everywhere
Clean tabs and stuff
Make Click & Hover immutable
Ensure stored String[] and ItemStack are not modified
Handle null value in String[]
Add .toString() to Message and Part
Don't print "null" for Achievement or Item parts