MPLS Decoder, v3

This update to the MPLS decoder sets events on labels that should not be seen on the wire and adds unit tests for them.  TM_ECODE_OK returned instead of fail per the comment on the previous PR.

Buildbot output:
- PR build: https://buildbot.openinfosecfoundation.org/builders/jasonish/builds/1
- PR pcaps: https://buildbot.openinfosecfoundation.org/builders/jasonish-pcap/builds/1

We're looking at the first byte in an attempt to guess IPv6, IPv4, or if its 0, an ethernet pseudowire, then we fall back to ethernet as it doesn't look like IPv6 or IPv4.  The main problem I see here is that some ethernet frames could try to be decoded as IP, so we should probably further validate the check for what it is (verify IP/IP6 checksum maybe)?

Its looking like it should be configurable.  Perhaps like Snort, a single command line to specify the payload type as one of ipv6, ipv6 or ethernet.  And perhaps a more indepth configuration in YAML to associates labels to a specific payload time (perhaps at a later date).  Is there an existing heuristic in Suricata to do better packet type guessing?

As for debugging, the user really needs to know about their network and how MPLS is configured.  In some cases an explicit label is on the wire to describe the payload (which is handled before the guessing).  But in many (most from what I've seen) the explicit label is not there so you have to guess the payload type.