lockfree: introduce bag_mpsc

It's like queue_mpsc with two improvements:

 * consumer and producer lists are cache line aligned to avoid false
   sharing. I was tempted to apply this to queue_mpsc too but then
   descovered that this queue is embedded in a mutex, and doing so
   would greatly bloat the mutex size, so I gave up on this idea.

 * The contract of poll() (queue_mpsc::pop()) is relaxed to return
   items in no particular order so that we can avoid the cost of
   reversing the chain.
mempool: make mempool_cpuid() inline

Improves misc-alloc-speed.so:
mempool: remove contention inside free_different_cpu()

Fixes #308.

When the per-cpu-pair ring fills up, the freeing thread is blocked and
enters a synchronous object handoff. That synchronous handoff is cause
of contention. Instead of having a bounded ring we can link the
objects together in a lockfree-queue. This requires no extra space as
all state is kept inside the freed objects. Therefor the queue does
not need to be bounded and no blocking is needed.

Dead objects are collected by per-CPU worker thread (same as
before). The thread is woken up once every 128 frees. That threshold
was chosen so that the behavior would more or less correspond to what
was before.
tests: add test for malloc/free throughput across cores