UDP answering converted to mempool memory allocator.

This allows us to reuse the memory without worry about freeing.
Flush (sort of free) is done after packet processing is finished.
Uses generic mm context and mempool from libucw.

Change-Id: Ifcc74e745797eb7f6833c74dc9ebd89743ba4358
Simplified and cleaned up label compression.

The idea was to use simplified tries, but it didn't work so well.

Simplified and cleaned up label compression.

The idea was to use simplified tries, but it didn't work so well.
New approach is based on the fact, that only a small part of unique
suffixes is reused in the packet (mostly qname and few related names),
whilst rest of the names are mentioned scarcely.
As a tradeoff, we will compres those most common names.

Table is scanned in a linear fashion.
Name suffix is aligned (end-to-end) to a current table pointer.
Aligned labels are then compared and best coverage is reported.
Matches that can't exceed current best coverage are ignored.
Not/partially covered names are inserted (only index to wire).
Covering matches are promoted to a lower index, this is because:
- frequent matches are inspected earlier, performance increase
- last 1/4 of the least-used names may be replaced randomly with new names

Didn't change the currently used API to keep the patch nice
and sweet, but there's a lot of legacy code to be removed.

Change-Id: Id86bc7e3e56012182eebf148aad3ddc3b2649879
Removed weird owner_tmp and deprecated compr_cs parameters.

Change-Id: Ie86eb4df209143f5581d90f4dcd9f27f0330b68a