Added additional interfaces for specifying data link and network layer
protocols that have a method that return the corresponding protocol
identifier (hardware address type and ether type).
enhanced EthernetFrame's encode method to get the EtherType from the
embedded data unit (if it's a network layer protocol and not null)