Added a few more amd64 opcodes, the comparisons.

This adds support for F_EQ, F_NE, F_LE, F_GE, G_LT and F_GT.

They could be better, it would be simple to add floats, as an example,
especially in F_EQ and F_NE (they /almost/ work for floats, nan
complicates things however).
Also removed add_short
We object to objekt.
IOBuffer: Optimise and fix range checks.

Eliminates some of the recursions.
IOBuffer.cstring to parse \0 terminated C-strings.
Revert "IOBuffer: Optimise and fix range checks."

This reverts commit 91460a41b2b68b9d745827a07b6762adc99e3ed9.

This introduced several errors, including some that causes buffer overruns.
It also made the code biger on average (just check using size).

Please do not change the math unless you are very certain it will
work.

Also, please trust the compiler, both to unroll loops even if it does
not make sense and to optimize obvious comparisons, yes?

Obvious example: check_avail_mul suddenly is pointless.

The whole idea with that function is to _safely_ check if A*B is bigger than the buffer.

Consider A*B >being > NATIVE_INT_MAX.
IOBuffer: Fixed fatal "Invalid io_rewind_on_error nesting".

The value in io->locked_move was off by one.
Eliminate add_short from testsuite.
Simplify code, speed up fast path.