Expand `RelationSpy` with more query, spawn and finder methods

This adds more of ActiveRecord's query, spawn and finder methods.
This makes the spy more featureful and useful for testing. This
also organizes the class, adding comments for what ActiveRecord
class the methods come from. It also organizes the tests to use
better use cases and more explicit tests. Before the tests were
just a "sea of shoulds" and it was difficult to find where each
method was being tested.

This also expands the `merge` to perform more "merge" like
behavior. If a relation spy is passed to the `merge`, it will
add it's applied expressions. It still has it's old behavior
if a non relation spy is passed to the `merge` method.

This also removes `order_values` and `reverse_order_value` from
the spy. This was a short sighted addition as these require
double-managing the values and the applied expressions. Furthermore,
these methods seem to be intended as "private" or for internal
use only, as they require specific knowledge of how to set them
correctly. I'd rather not have the spy worry about managing both
ActiveRecord's hash of values and the spies list of applied
expressions.