mempool: Introduce page_pool

The page pool caches a pool of pages. The number of pages is capped by
_max_size. When we allocate a page, allocate from the pool firt if the
pool is not empty. When we free a page, push the page into the pool
instead of really freeing it.

This change reduces page buffer pressure caused by virtio-net
allocations, showign up as contention inside unfill_page_buffer() and
refill_page_buffer(). The virtio-net subsystem allocates pages on one
CPU which are then scattered across all other CPUs and freed to their
per-CPU buffers. To mitigate that, this change enables caching of
pages used by virtio-net.