Fix ... Range conditions sanitization

Hi all,

Currently, :conditions => {:foo => 2.0..3.0} and :conditions => {:foo
=> 2.0...3.0} both sanitize to "foo BETWEEN 2.0 AND 3.0", which is
incorrect - Ruby's Range object is defined to exclude the end value
when you use ... to create the range, so we need to output "foo >= 2.0
AND foo < 3.0" in this #exclude_end? case.

The patch I've attached to #1865 fixes this behavior. I made a small
refactor to the two calls to attribute_condition to support passing
along the (quoted) attribute name so that it can be mentioned more
than once.

Any chance we could get this into the next release?