Implement `EqAll` for all supported tuple sizes
Implement `EqAll` for all supported tuple sizes

I'm not sure why we didn't always go with something like this, it would
have worked with any version of Rust (we aren't using type macros here).
I think I just wasn't well versed enough with Rust's type/macro system
at that point in time.

Anyway, this just implements every version of `EqAll` in terms of the
implementation for one smaller sized tuple. We handle the single element
tuple case separately to terminate the recursion.

sgrif/diesel,diesel-rs/diesel,sgrif/diesel,diesel-rs/diesel