normalize account chain usage

refs CNVS-15408

 * add/improve (Course|Account)#account_chain to not have to load
   a single account first, separately (it uses a recursive query to
   load them all at once)
 * change ContextExternalTool.contexts_to_search to use account_chain
   to get the benefits of the recursive query
 * remove #account_chain_ids - it loaded all the accounts anyway, so
   didn't have any optimization, and turns out in all cases it was
   used it either didn't matter, or was actually better to not use it

test plan:
 * use some LTI tools. that should exercise everything changed here

Change-Id: Ie9e89c2566db5c82fb424b41dc21c06be7d0b112
Reviewed-on: https://gerrit.instructure.com/40878
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Nick Cloward <ncloward@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>