Fix broken Bignum#>>.
Fix broken Bignum#>>.

We now correctly simulate a twos-complement representation by
conditionally rounding toward negative infinity.  This is simpler
than converting to twos-complement twice, and doesn't require any
tricky filling the shift vacancy with ones.

We short-circuit the case where we're shifting zero bits and
use mp_div_2d() instead of reimplementing the bit-shifting.

Also, drastically simplify bignum_left_shift() by using mp_mul_2d.

travis-repos/rubinius,digitalextremist/rubinius,Wirachmat/rubinius,chad/rubinius,dblock/rubinius,jemc/rubinius,kachick/rubinius,heftig/rubinius,benlovell/rubinius,travis-repos/rubinius,ngpestelos/rubinius,mlarraz/rubinius,jemc/rubinius,jsyeo/rubinius,jsyeo/rubinius,ngpestelos/rubinius,dblock/rubinius,Wirachmat/rubinius,Azizou/rubinius,chad/rubinius,kachick/rubinius,chad/rubinius,lgierth/rubinius,chad/rubinius,jemc/rubinius,Wirachmat/rubinius,ruipserra/rubinius,benlovell/rubinius,jemc/rubinius,pH14/rubinius,mlarraz/rubinius,ruipserra/rubinius,Azizou/rubinius,heftig/rubinius,benlovell/rubinius,heftig/rubinius,kachick/rubinius,mlarraz/rubinius,jsyeo/rubinius,sferik/rubinius,chad/rubinius,dblock/rubinius,slawosz/rubinius,chad/rubinius,digitalextremist/rubinius,Wirachmat/rubinius,ruipserra/rubinius,ngpestelos/rubinius,mlarraz/rubinius,dblock/rubinius,jsyeo/rubinius,mlarraz/rubinius,Azizou/rubinius,pH14/rubinius,Wirachmat/rubinius,jemc/rubinius,travis-repos/rubinius,digitalextremist/rubinius,ngpestelos/rubinius,sferik/rubinius,jsyeo/rubinius,slawosz/rubinius,jsyeo/rubinius,sferik/rubinius,lgierth/rubinius,heftig/rubinius,benlovell/rubinius,kachick/rubinius,sferik/rubinius,slawosz/rubinius,sferik/rubinius,slawosz/rubinius,travis-repos/rubinius,mlarraz/rubinius,Azizou/rubinius,ruipserra/rubinius,Wirachmat/rubinius,heftig/rubinius,dblock/rubinius,ngpestelos/rubinius,heftig/rubinius,kachick/rubinius,pH14/rubinius,pH14/rubinius,kachick/rubinius,ruipserra/rubinius,pH14/rubinius,ruipserra/rubinius,digitalextremist/rubinius,Azizou/rubinius,jsyeo/rubinius,benlovell/rubinius,chad/rubinius,benlovell/rubinius,digitalextremist/rubinius,ruipserra/rubinius,chad/rubinius,jemc/rubinius,chad/rubinius,kachick/rubinius,lgierth/rubinius,dblock/rubinius,pH14/rubinius,pH14/rubinius,slawosz/rubinius,lgierth/rubinius,digitalextremist/rubinius,slawosz/rubinius,slawosz/rubinius,sferik/rubinius,Wirachmat/rubinius,ngpestelos/rubinius,Azizou/rubinius,chad/rubinius,travis-repos/rubinius,sferik/rubinius,dblock/rubinius,travis-repos/rubinius,Azizou/rubinius,benlovell/rubinius,lgierth/rubinius,ngpestelos/rubinius,jemc/rubinius,lgierth/rubinius,kachick/rubinius,heftig/rubinius,digitalextremist/rubinius,mlarraz/rubinius,lgierth/rubinius,travis-repos/rubinius