array: RFC: Another approach to fix the remove_at() issue

This is more efficient as it only requires a memcpy if remove_at is
actually called.  But is could be problematic if the passed pointer is
assigned to another variable or otherwise passed around before remove_at
is called.