New demo application: nqueens

This is a new demo for the nqueens based on the X10 version.
Seems to me that you could do it fairly cleanly (and more like X10's implementation) by defining a "Board" class and then having that board class know its size, and allocate from the locale heap so we can use memcpy. Something like this:

~~~cpp
class Board {
  int size;
  int* array;
public:
  Board(int size): size(size), array(locale_alloc<int>(size)) {}
  ~Board() { locale_free(array); }
  bool is_safe() { /*...*/ }
}

void search(GlobalAddress<Board> cols) {
  Board old = delegate::read(cols);
  auto src = make_global(old.array, cols.core()); // construct a global address to the other array (pointer & core that the board is on)
  Board* here = new Board(old.size);
  memcpy(make_global(here->array), src, here->size);
  
  /*...*/
  
  if (safe) {
    Board* b = new Board(here.size+1);
    memcpy(b->array, here->array, here->size);
    /*...*/
  }
}
~~~