Extract submatchers from AssociationMatcher

Refactored AssociationMatcher so that `#order`, `#through`, and `#dependent`
would be their own submatchers. This reduces some of the clutter in the main class,
especially as we continue expanding it. In addition, a few related tests were
modified so that they would check failure messages also.
Swap out protected for private methods in AssociationMatcher

This also includes some method rearranging so that each would fall under the
correct scope.
Replace instance variables with readable attributes in AssociationMatcher