Added HugeTLB support for allocating DMA memory.

New API:
  memory.dma_alloc(bytes) => ptr, actualbytes
allocates physically contiguous memory from one HugeTLB page.

The memory is allocated with the mmap() flag MAP_HUGETLB.

If allocation fails then the code audaciously asks the kernel to
provision a new HugeTLB page and tries again. This is done by
increasing /proc/sys/vm/nr_hugepages. If you would like to free up
those huge pages after you're done running snabbswitch then you can do:
  echo 0 > /proc/sys/vm/nr_hugepages
and the memory will go back into circulation.

Expect another commit soon to replace the quick hack of hard-coding
the expected HugeTLB page size.

Here is a transcript of the updated selftest function:

    selftest: memory
    Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 0
      Allocating 1MB from a HugeTLB page: cdata<void *>: 0x7fb083600000, 1048576
      Allocating 1MB from a HugeTLB page: cdata<void *>: 0x7fb083800000, 1048576
      Allocating 1MB from a HugeTLB page: cdata<void *>: 0x7fb083a00000, 1048576
      Allocating 1MB from a HugeTLB page: cdata<void *>: 0x7fb083c00000, 1048576
    Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 4
    HugeTLB page allocation OK.