Implement missing Machinery::Array#hash method

Various Array operators such as "-" and "&" use #eql? and #hash to
compare array elements. Because #hash was undefined for
Machinery::Array, during comparison of nested Machinery::Array
structures it could have happened that inner Machinery::Array instances
that were equal were considered different (becasuse the default #hash
implementation returns the same result only for the same objects
reference-wise). The comparison returned wrong result as a consequence.

This commit implements the missing Machinery::Array#hash method as a
delegator to the inner @elements array. Because Array (the class of
@elements) implements #hash sanely (structurally), this solves the
problem and fixes the comparison.

Part of a fix of #23.
Extract ComapreTask#render_comparison

This will mostly make testing a little bit easier.

Part of a fix of #23.
Add tests for rendering comparisons

This adds a test for rendering comparisons of packages as an example for
comparing list and a test for rendering comparisons of the os as an
example for comparing objects.

The packages comparison fails because of issue #23. This will be fixed in
the next two commits.

Based on code by Cornelius Schumacher from #44.

Part of a fix of #23.
Change Machinery::Scope#compare_with implementation

Machinery::Scope#compare_with used a simple hard-coded implementation,
which didn't return correct results when the payload was an array (which
is actually the case for most scopes).

This commit changes the implementation to delegate comparison to the
payload. This required implementing Machinery::Object#compare_with
method, which was missing.

Part of a fix of #23.
Fix rendering of array comparison

When comparing two scopes containing arrays of items, nothing was
printed by Renderer#render_comparison in case one of the arrays
contained all the items as the other one plus some additional ones.

This commit fixes the code in Renderer#render_comparison to print the
additional items. The commit also restores a test for this condition,
which was wrongly re-purposed to test something completely different.

Part of a fix of #23.
Merge pull request #122 from SUSE/fix-comparison-differently-2

[Review] Request from 'dmajda' @ 'SUSE/machinery/fix-comparison-differently-2'