feat(TaskList): require copy target for copyTaskList
fix(TaskList): addTask returns defensive copy
fix(TaskList): use defensive copying in undo/redo