backup
Reimplements the ARGS, CONST and LVAR instructions.
Reimplements the LSET instruction
Implements the SAVE instruction
Fix a bug when eliminating unused value of side-effect free primitives call
Implements the PRIM instruction
Reimplement the POP instruction
backup
Define a environment type, its bindings are a-list.
Change the processing procedure of some environment related functions

Change the searching procedure of following functions:

1. search_binding
2. search_binding_index
3. add_binding
4. set_binding
The bug is fixed by changing the environment implementation
Merge branch 'feature-environment' into feature-vm
Change the implementation of `get_variable_by_index' and `set_variable_by_index'
Add the printer dispatch for environment and implement the FN instruction
Misc modifications

Fix bugs in functions `get_variable_by_index' and `move_args'. In the
first, the return value should be a `pair_cdar' expression. And in the
second, do not push, but modify the cdr of each tuples in a-list.
Implement the RETURN and fix a bug in FN instruction

In FN instruction, the environment of the argument closure should be
the current one
Implements the GSET and GVAR instructions
Implement the FJUMP instruction and supplement the definition of RETURN
Implements the TJUMP and JUMP without testing
Merge branch 'feature-vm' into develop