Refactor HaveAttributeMatcher to move the responsibility of description building from the description method to the chainable expectation methods
Refactor HaveAttributeMatcher to move the responsibility of description building from the description method to the chainable expectation methods

This is a move in the direction of the "misplaced responsibility" code smell, but the trade off is we get to generalize the core logic of the matcher and place all the specifics in the growing set of chainable expectation methods. It also has the side benefit of generating the description in the order that the developer wrote the expectations. Expect the expectation logic to move in this same direction.

HaiTo/active_attr,fiverr/active_attr,estum/active_attr,cgriego/active_attr,lloydk/active_attr