[ANN] packetgen 3.0.0 released

packetgen 3.0.0 has been released.

* home: <https://github.com/sdaubert/packetgen>
* bugs: <https://github.com/sdaubert/packetgen/issues>
* doc: <https://github.com/sdaubert/packetgen/wiki>

PacketGen provides simple ways to generate, send and capture network
packets.

Supported protocols are: Ethernet, Dot11, Dot1x, ARP, IP, IPv6, GRE,
ICMP, IGMP, ICMPv6, MLD, MLDv2, OSPFv2, OSPFv3, UDP, TCP, SNMP, DNS,
EAP, BOOTP, DHCP, TFTP, HTTP and MDNS.

This is a major release of PacketGen. Some behaviours have changed (see
below). NetBIOS, ESP and IKE protocols are no more supported out of the box.

This major release comes with its plugins:

* SMB plugin 0.4.0 (https://github.com/sdaubert/packetgen-plugin-smb).
This plugin now supports NetBIOS protocol.
* new IPsec plugin 1.0.0
(https://github.com/sdaubert/packetgen-plugin-ipsec). This plugin
supports ESP and IKE protocols.

To install plugin, do:

        gem install packetgen-plugin-smb packetgen-plugin-ipsec

Changes:

### 3.0.0 / 2018-10-26

* NetBIOS protocol is no more part of PacketGen. This protocol is now
included in SMB plugin.
* ESP and IKE protocols are no more parts of PacketGen. These protocols
are now included in their own plugin: IPsec plugin.

* Behavioral changes:
** Make all types respond to human API (#to_human and #from_human). This
implies some changes on Types::String fields: magic method now returns a
ruby String, and no more the Types::String. To access to it, use #[]
accessor. For example, to access Types::String of body field in IP
header, do: ip[:body].
** Types::Array now accepts length_from option, as Types::String already
does.
** Home-made protocols which defined #protocol_name should now defines
.protocol_name to be recognized by their name (used in Packet.gen and
Packet#add).
** #to_w now calls #calc on packet by default. To send erroneous
packets, set calc option to false (i.e.: pkt.to_w(iface, calc: false)).

* clean up:
** big clean of whole code.
** Remove deprecated methods.
** remove a lot of warnings when running with ruby -w.

* Optimizations:
** Optimize packet parsing;
** Optimize #to_w, especially on IPv6: there is no more limitation on
what can be sent on wire.
** Optimize Utils.mitm. Spoofed IP will see far lesser lag.
** Header::IP#calc_length now also calculates ihl field.