Change the method used to discover Directive annotated classes to ensure that the Dart code can be tree shaken. Closes #497 Closes $\x23736
See https://codereview.chromium.org/927373004/ Closes #705
Closes #646 Closes #496 Closes #498