Reworking the DNP3 parser.

There were still a number of problems in the buffering code, and it
was also generally quite hard to follow. So I ended up pretty much
rewriting the C++ part of the analyzer, shrinking code size
significantly during the process.

I've also replaced the BinPAC work-around of manipulating buffer sizes
manually with calls to new methods that BinPAC now exposes directly.
It's still just a work-around for BinPAC's shortcomings, but a nicer
one. :)

I hope I didn't break anything, all I can say is that the existing
tests pass ...
Moving submodule.
added condition to check DNP3 packet without app layer data
added a test case for dnp3 packets with only link layer