flow: new flow queue: flow_recycle_q

This queue will be used by the FlowManager to pass timed out flows
to another thread that will do the actual cleanup.
flow: introduce FlowRecycler stub

FlowRecycler thread stub. Start/stop code.
flow: move flow cleanup to new 'recycler'

Move Flow clean up from the flow manager to the new flow recycler.
flow recycler: shutdown

Only shut down when all flows in the recycle queue have been processed.
flow recycler: unix socket support

Support starting and shutting down the flow recycler thread in the
unix socket runmode.
flow: output api stub

Basic output API for flow logging.
flow log: call logger from recycler

Call the flow logger API from the recycler thread, so that timed
out flows are logged.
flow: flow log threading setup

Set up threading for the flow logger.
flow-json-log: stub

Stub for JSON flow logger.
flow-log: log pkts, bytes

Only in DEBUG currently.
tcp: track TCP packet flags per session

For logging out in flow logging.
flow-log: log TCP flags seen

Log TCP flags seen during the life time of a flow/session.
flow log: log start/end times

Log time of first packet (flow creation) and of the last packet.
flow: track bytes per direction

Track bytes in both flow directions for logging purposes.
flow: track lastts in struct timeval

Track full timestamp for lastts in flows to be able to log it.
flow unittest: update flow manager unit test

Test now tests a different queue.
flow: clean up recycle queue at shutdown

Mostly for tests that don't start the recycler thread, make sure
all flows are cleaned up.
flow: don't BUG_ON if no loggers are enabled

API is always called, even if no loggers are enabled. Don't abort()
in this case.
flow: take flow pkt & byte count out of debug

Until now the flow packet and byte counters were only available in
DEBUG mode. For logging purposes they are now available always.
flow: prepare flow forced reuse logging

Most flows are marked for clean up by the flow manager, which then
passes them to the recycler. The recycler logs and cleans up. However,
under resource stress conditions, the packet threads can recycle
existing flow directly. So here the recycler has no role to play, as
the flow is immediately used.

For this reason, the packet threads need to be able to invoke the
flow logger directly.

The flow logging thread ctx will stored in the DecodeThreadVars
stucture. Therefore, this patch makes the DecodeThreadVars an argument
to FlowHandlePacket.