memory.lua: Allocate by slicing up "chunks".

DMA memory is now sliced out from a "chunk" of available memory.

Chunks can either be supplied by physical address with:
  memory.install(address, size)
or else they are automatically allocated by mmap()ing HugeTLB pages as needed.

So if you want to do the "old style" way of giving DMA memory to
snabbswitch then you can do this:

  Boot Linux with memmap=16M$0x10000000
  Extend e.g. selftest.lua with: memory.install(0x10000000, 16*1024*1024)

and then the first 16MB of allocations will be sliced out of this
memory without allocating a huge page.

This hopefully helps @pkazmier with issue #34. See also issue #39.
memory.lua: Fix in memory.install().
intel.lua: protected(): Updated 'bound' variable; init_dma_memory(): updated calls to protected() (fix for issue #40)
Merge pull request #42 from rahul-mr/issue40

Fix for Issue #40: protected() bounds-checking now based on index (was bytes).
Merge remote-tracking branch 'upstream/master'