Ensure rule of three is met

Added deconstructors, copy constructors, and assignment operators where
applicable. Added unit tests for the rule of three properties. Added
ensureCapacity() method to ArrayList in preparation for ArrayQueue.