Fix decoding a signed int from bson under rubinius. 

INT2NUM is implmented differently. and the result is MAX_INT for -1, this corrects the issue and also ensures signed behaviour under all rubies