Improve the documentation for Tool and Repository classes.
Review Request #1807 — Created Dec. 12, 2019 and updated
The `Tool` and `Repository` classes are pretty fundamental to the product, but are a bit of a mess. Some upcoming work will be changing these classes some, and it felt like a good time to make sure we had properly brought this up to modern standards. This change adds and rewrites documentation for these classes, making types, exceptions, and behaviors a lot more clear. The classes and methods can now be better understood when viewing the generated documentation. The next change in this series will rearrange some methods in the `Repository` class in order to better keep the class organized going forward. Testing Done: Built the docs. Checked to make sure there weren't any build errors or broken links. Reviewed at https://reviews.reviewboard.org/r/10768/