Fix wrong size returned by abc::range::size() for negative ranges
Add test case for abc::range