Add a packet listener system

(This is my first FML patch, so I hope I put everything in the right place.)

This patch adds a system to listen for, analyse, modify and cancel any incoming or outgoing packet.

Example usage:
````java
public class MyPacketListener extends PacketListener {
	MyPacketListener() {
		registerOutgoing(3);
		registerIncoming(3);
	}

	@Override
	public boolean onOutgoingPacket(Packet packet, INetworkManager networkManager, NetHandler netHandler) {
		final Packet3Chat p3 = (Packet3Chat) packet;
		if (p3.message.contains("notch"))
			return false; // block all outgoing chat containing "notch"
	
		return true;
	}

	@Override
	public boolean onIncomingPacket(Packet packet, INetworkManager networkManager, NetHandler netHandler) {
		final Packet3Chat p3 = (Packet3Chat) packet;
		if (p3.message.contains("notch"))
			return false; // block all incoming chat containing "notch"

		return true;
	}
}
````
I'm willing to make changes in order to make it fit with the rest of FML or increase usability