Improve type checks and add support for Float and Bignum

This reverts commit fbc9754397fb0c6369c4ddc299e7fbbf02b673d1 too,
because we now always store type bits inside the object so that fix
isn't necessary anymore.

The addition for Float and Bignum was based on some benchmarks using for
example Numeric#step, which checks against Float and String#* which
checks against Bignum.
Remove usage of &block in cases where it's not needed

This would capture into a Proc, for which we set the lock bit because it
might be used across threads. This causes slower local access. This
removes the creation of the Proc for cases where we don't need it
anyway.
Simplify implementations of Fixnum#<< and Fixnum#>>
Add benchmarks for shifting outside Fixnum range
Add JIT support for Fixnum#<< and Fixnum#>>

This uses the same simplified check mechanisms as the simplified
primitive logic. Also only works by default on positive numbers and
falls back to the primitive implementation for a negative receiver or
argument.

Benchmarks
==========

Before:
benchmark/core/fixnum/bench_left_shift.rb
=== bin/rbx ===
     left shift by 1 77601999.0 (±2.8%) i/s -  387553362 in   4.998034s
     left shift by 8 78609163.4 (±3.0%) i/s -  392360256 in   4.996938s
    left shift by 16 78534804.2 (±9.8%) i/s -  387003800 in   4.994741s
    left shift by 32  9135218.6 (±1.7%) i/s -   45775530 in   5.012402s
    left shift by 64  7145894.9 (±0.7%) i/s -   35863800 in   5.019027s

benchmark/core/fixnum/bench_right_shift.rb
=== bin/rbx ===
    right shift by 1 91321138.7 (±3.5%) i/s -  455555848 in   4.996689s
    right shift by 8 91187007.4 (±2.8%) i/s -  455497321 in   4.999472s
   right shift by 16 93562460.5 (±2.6%) i/s -  467401128 in   4.999379s
   right shift by 32 91045769.1 (±3.0%) i/s -  454763943 in   4.999677s
   right shift by 64 96346103.0 (±2.9%) i/s -  481247721 in   4.999311s

After:

benchmark/core/fixnum/bench_left_shift.rb
=== bin/rbx ===
     left shift by 1 266359413.5  (±5.9%) i/s - 1323845154 in   4.992531s
     left shift by 8 266910894.1  (±5.6%) i/s - 1328187750 in   4.995615s
    left shift by 16 245329568.6 (±11.2%) i/s - 1207890156 in   4.994857s
    left shift by 32  11048101.9  (±3.7%) i/s -   55179454 in   5.003289s
    left shift by 64   8117302.4  (±4.8%) i/s -   40605883 in   5.015349s

benchmark/core/fixnum/bench_right_shift.rb
=== bin/rbx ===
    right shift by 1 263983190.6  (±5.8%) i/s - 1312508064 in   4.992483s
    right shift by 8 248314080.0 (±10.5%) i/s - 1224656144 in   4.994831s
   right shift by 16 252206987.9  (±9.5%) i/s - 1245788352 in   4.993810s
   right shift by 32 266042755.2  (±5.8%) i/s - 1322271225 in   4.993654s
   right shift by 64 246394016.8  (±9.9%) i/s - 1217534883 in   4.995573s