ivory: Add dynamic array memory areas.

- Allows creating a MemArea with a size known at Haskell run-time
  (rather than compile-time) as a DynArray.  This is very useful
  for generated look-up tables that have an unknown size at the
  type level.