Get rid of set-it-and-forget-it connection management

@tchandy: This branch demonstrates a concrete example of the "double select" bug in 846785b and then proposes a technique for solving it in af2c62c. The root cause of this bug is that sometimes the evaluation of association methods can result in more than one call to a method that triggers the `should_clean_connection?` behavior. This patch remedies that problem by forcing each association to use its memory of its current_shard to point all association-level methods to the right database.

However, the nature of the fix is quite dramatic: we no longer have any cases where we `reload_connection()` and simply leave the proxy "pointed at" a shard for later use! This has some implications for people who were inadvertently relying on this behavior without realizing it, so although all the Octopus specs pass I'd suggest that people re-test their code before using this version.

My implementation of QueryOnCurrentShard may be incomplete, although I've added every method that caused me trouble or might in the future. Since the design of this patch is based a simple array of ActiveRecord::Relation methods, it should be easy to fix if I've overlooked anything.