change array assignment operator to wrap the array

This is necessary because of the way cython behaves.  Cython tries to
wrap every single statement in try, catch clauses, even when that means
they have to create an explicit temporary named variable.  The following
cython code:

   cdef _pele.Array atomsA = _pele.Array ( atomsAnp.data, atomsAnp.size)
   cdef _pele.Array atomsB = _pele.Array ( atomsBnp.data, atomsBnp.size)

Gets translated into the following c++ code (with some simplifications)

   Array temp_array, atomsA, atomsB;
   try {
       temp_array = pele::Array(__pyx_v_atomsAnp->data, __pyx_v_atomsBnp->size);
   } catch(...) {
     ...
   }
   atomsA = temp_array;

   try {
       temp_array = pele::Array(__pyx_v_atomsBnp->data, __pyx_v_atomsBnp->size);
   } catch(...) {
     ...
   }
   atomsB = temp_array;

This means that temp_array is assigned first to atomsA then to atomsB.
The assignent operator must be general, and it shouldn't be
computationally intensive (i.e. it shouldn't copy the whole array).