Misc modifications
Add the two flags `is_val' and `is_more' to compiler functions
Change the is_val and is_more value

Change in function call of `compile_object' in function
`compile_arguments'. Both of the flags are `yes'.
Do in function `compile_begin' as in `compile_arguments'
Use the flags to controll the code generation in `compile_constant', `compile_var'
Modify the `compile_if' to use two flags and test it
Change the function `compile_application' to use two flags for tail call
Update the function `compile_lambda'

Add auxiliary functions `gen_args_ins' and `make_proper_list'. Two new
instructions `ARGS.' and `CALLJ' for processing rest arguments and
tail call respectively.
Add a pretty-printer for type COMPILED_PROC
Add a optimization for compiling if form

form `(if #f x y)' reduce to `y'.
Optimize the compilation of if form when its then, else part is equal.
Remove the tagged pointer type and fix a bug in `is_self_eval'
Reimplement the `define' as syntax sugar of `set!'
Enforce the evaluating order when compiling arguments
Remove the `gen_pop()' in `compile_begin'
Change the use of flags in `compile_object' and `compile_if'

In function `compile_if': When compiling the predicate part of if
form, its value is expected and there are more expressions in the if
form.

In function `compile_object': Only compile a lambda form when its
return value would be used, and add a RETURN instruction when there's
no more expressions.
Initialize the startup environment by data-driven way
Fix a bug in primitive initialization and optimize the `compiler_application'

When the operator has no side-effects, the calling is
unnecessary. Therefore just compile the argument list is OK.
Update the `compile_assignment' according to PAIP
Remove the use of garbage collection