Fixing copy assignment, adding move assignment.

- Make sure destroy calls pseudo-destructors for trivial
  data members.