[jit] Division optimization doesn't apply to division by 2^31, which is negative.

Add more division tests.
[jit] Replace unsigned division by constants with multiplication, additions and shifts for better performance.

The algorithm is based on the equality [n/c] == [2^k/c * n/2^k], where k is a conveniently chosen shift amount and 2^k/c is the magic number. For more information check "Hacker's Delight", chapter 10-10.

The emitted code is over 6 times faster than a standard hardware division on amd64.
[jit] Replace signed division by constants with multiplication, additions and shifts for better performance.

The algorithm is based on the equality [n/c] == [2^k/c * n/2^k], where k is a conveniently chosen shift amount and 2^k/c is the magic number. For more information check "Hacker's Delight", chapter 10-6.

The emitted code is over 3 times faster than a standard hardware division on amd64.
[tests] Add random division test for constant division.
[jit] Add counter for constant division