Split connect into open and connect

Split up the protocol method 'connect' into an open and connect function
(for all protocol layers). The idea is for open to create a protocol
object but not actually open the connection yet. connect then actually
sets up the connection (performing handshakes as required).

This means we can chose to only use open in the analysis code. Trying to
send packets to pcap (and waiting for responses) doesn't work very well.
Remove malloc() error checking

It's usually pointless to check for malloc failures, as a default Linux
install will overcommit memory.
Even worse, we were inconsistent about checking the return values too:
we only checked some of the time.

Avoid leaving untested (and incomplete) code paths around, so simply
delete the malloc() error checking. Assume there will always be enough
memory.

If we ever decide to try to port this code to a system where malloc()
can realistically fail we will have to revisit all malloc() calls anyway
and audit the error paths.