Add the ability to intercept the write method of packets.

This is done by constructing a proxy around the class after every
event handler has been invoked, intercepting the write method. Each 
PacketOutputHandler registered by the packet event listeners is 
invoked in turn, modifying a byte array of the data that will be 
written to the network stream.

The byte array is initially filled with the serialized version of the 
packet in the packet event.
Generate a new class for each packet type, as getID is final.

We can't override the getID method in Packet, as it is marked as final.
Instead, we'll just generate a seperate class for each packet ID that 
needs to be intercepted.

We can't inherit from the packet ID of any particular class, as it 
may get recognized and modified by the sendPacket() method. This could
be a problem if this recogition is necessary, but we'll come back to 
this later.
Adding a packet handler adapter, for symmetri with PacketAdapter.
Added the ability to intercept serialized input packets on CraftBukkit.

Spigot will be added later.
Ensure that the new read packet feature is supported in Spigot.
Merge branch 'master' of https://github.com/aadnk/ProtocolLib.git