sync context_external_tool_placements more efficiently

test plan:
 - Use "Edit external tool" API and consult canvas logs
   to verify that 15 nearly identical DELETE queries
   are not sent to the database

fixes CNVS-17302

Change-Id: If6babf31e3c890c17be311ab39020414e53d006c
Reviewed-on: https://gerrit.instructure.com/45431
Reviewed-by: James Williams  <jamesw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>