basic vector support
synatic sugar for defining lambda, and a few helpers
remainder procedure and context-probe for debugging
solved the closure problem
a fix about let notation
modified map function
added some list utilities

new primitive procedures:
 * append
 * length
 * apply

 * append (code helper)

behavior modification:
 * NULL.list? now returns true
 * NULL.cons!(x) returns x

bugfixes:
 * primitive procedure: context-probe, now regards the second arg
   correctly.
 * SExpr#append! now regard the tail as either an atom or a list
 * SExpr#tail_node: bugfix while tracing the tail node of a list
added some number-type relative functions
Merge branch 'dev'