Fix handling MPLS

Encoding/decoding MPLS packets assumed that the last MPLS header is followed
by an EtherType field that is present in Ethernet or 802.11q headers.
That is incorrect - MPLS header DOES NOT carry any information about upper layer
protocol.
(Motivated by FlowForwarding/LINC-Switch#144).
Add tests for handling MPLS

Now generated packet models also include MPLS headers.
(Motivated by FlowForwarding/LINC-Switch#144).
Refactor test module

After adding tests for handling MPLS test module has became poorly readable
and needed refactoring.
(Motivated by FlowForwarding/LINC-Switch#144).
Merge pull request #9 from esl/issue144

Fix handling MPLS packets