Nodes reporting 2.2.0

Primary Goals:

- Flatten and simplify node sync summary report.
- Simplify the synchronization flow and ensure that the *complete* summary report is always returned regardless of how far through the process it got.
- Add verification that the child node is suitable for synchronization so that all error reported up front instead of piecemeal.  Also provides for more validation in the future such as DB version checking.

The additional unit tests for the node error classes and conditions in which they are raised will be covered in the *node unit test coverage* story: https://rally1.rallydev.com/#/7675694122d/detail/userstory/11199276533.  Adding them here would have made a big-ish PR even bigger and more painful to review.

Unfortunately, to accomplish this story, a good bit of refactoring and renaming needed to be done which touched a lot of files.  This sometimes produces unhelpful diffs.