Some RVM reorganization and extension.

1. All code is generated via methods addCode0, addCode1, addCode2, ...
that take an opocde and 0, 1, 2, ... arguments. This  is a preparation
for encoding the arguments in a single word.

2. Added frequency counting for opcodes.
Major performance improvements to RVM

The following changes have been made to the RVM:

- All instructions are now encoded in a single 32-bit word. Operator and
arguments are retrieved using bit operations. Advantage: Only a single
memory access and pc increment to fetch an instruction.

- Added special case operations for loading the value of local variables
0 -- 9, i.e. LOADLOC0, LOADLOC1, etc. Advantage: minimize overhead per
access to each variable.

- Reorganized the order of cases in the interpreter based on profilign
instruction frequency. Advantage: improve cache locality.

The net effect is that the average speedup for all our benchmarks goes
up from 13x to 16.75x.

Note: due to argument enociding we have now an upperbound of 4096 for
number of constants, etc. When this turns out to be too small, we have
to move to either 64 bit words, or add extended instructions for
arguments that do not fit.
Merge branch 'master' of https://github.com/cwi-swat/rascal.git