Revert "Revert "Merge pull request #11 from js850/array_problem""

This reverts commit c545caecb285d4e947746bf6fa1e699bcd840714.

add back in the changes from the pull request.  The bug fix will be in
the next commits
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).
Merge pull request #12 from js850/array_master

add assignment operator (operator=) to Array class