Add Octopus::RelationProxy for shard-friendly (delayed) evaluation of ActiveRecord::Relation objects

The culmination of all of the other commits in this branch: the ability to get back
a RelationProxy object rather than a Relation object, so that the Relation remembers
which shard it is associated with even when evaluation of the relation is delayed.