closes #11

The interpreter has been fully parameterized by reference, information
and result type. To do so, we had to add a new type class:
`RefGenerator` which is able to generate the new reference given the
previous one.