Refactor getToolsForNode and getToolsForAnnotation

* Switch getToolForNode to getToolsForNode to allow multiple tools to edit
  the same node, but still use inheritance to use the most specific tool
  in the chain
* Generalize the process of collecting compatible tools for an annotation
  or node and reuse that code in both methods

Change-Id: I7602909ed611d97abbf32549ab3576ba0be1eebd