java/interp: Branch instructions

Switch to a two-pass translation algorithm that backpatches branch
targets after all basic blocks have been translated. This is needed only
for forward branches but to keep the code simple just backpatch
everything.

Backpatching is implemented by emitting zero offset in the code stream,
keeping track of emitted offsets (known as "labels"), and finally
iterating through all the labels after basic blocks are translated and
updating the code stream to use the basic block offset. Basic blocks are
also sorted by start address after splitting. This is needed to ensure
that conditional branches fall-through to the correct basic block.

Also add support for the op_if_icmpge instruction in the fast
interpreter so that we are able to run a test case with a simple "for
statement".

Signed-off-by: Pekka Enberg <penberg@iki.fi>