Rewrite packet handler interface so that packet handlers keep a list
of columns they can provide and take a list of columns to fill in when
parsing. Use this to only add used columns to the source rows.

Also remove some the unnecessary layering in packetq.h and remove the
broken first pass parse.

The DNS parser still extracts a lot of possibly unused information,
but just avoiding the creation and copy saves around 30% of the
running time on a simple 'select s, count(*) from dns group by s;'
query.