Now supports accepting port addresses as strings, like the ones accepted in our rules. As a consequence we now accept port range, and other such combination. Support PP for ports based on ipproto as well.
Introduce new options into the conf file to enable/disable -

1. Proto detection
2. Parsers

For app layer protocols.

libhtp has now been moved to the section under app-layer.protocols.http,
but we still provide backward compatibility with older conf files.
Allow detection ports for alproto to be specified via the conf file.

To understand the option have a look at the option

app-layer.protocols.tls.detection-ports
feature #727 - Add support for app-layer-protocol:<protocol> keyword
Introduce detection parser function pointer.
code cleanup.
update pmp to return whole set of matches, rather than a single match.
Provide convenience macros for setting flow flags on protocol matching by
PM and PP phase.

Replace the areas of the code that would otherwise rely on setting/reading
these flags with these macros.

Other minor tweaks to some api calls.
Replace ssn appproto_detection_completed flag with individual stream ones.
App layer protocol detection updated and improved.  We now use
confirmation from both directions and set events if there's a mismatch
between the 2 directions.

FPs from corrupt flows have disappeared with this.
code cleanup.
Move app event module registration as a part of app layer proto table.
validate dns sigs that are reported as plain dns and not dnsudp or dnstcp.
Fix duplicate packet decoder events. Add event entries that were missing as well.
Add and use EventGetInfo for getting info on an event.

Also update existing parsers and app-layer-event Setup to use this.
Add app layer protocol packet event detection support.
Update htp event handler to both warning and error events regardless of any conditions.
Introduce a separate inspection engine for app events.
alert ipv4 and alert ipv6 specified proto rules should be treated and PROTO_ANY just like how we treat alert ip rules.
Update rule engine relationship with regard to setting ip protocol between specifying protocol after action, ip_proto and app-layer-protocol.

Now we can specify alproto, ip_proto combinations this way

alert dns (ip_proto:[tcp/udp];)
alert ip (app-layer-protocol:dns;)
alert ip (app-layer-protocol:dns; ip_proto:tcp;)
alert tcp (app-layer-protocol:dns:)

so on.  Neater than using dnstcp/dnsudp.

This is related to feature #424.