added several new features and fixed some bugs

1) fixed one lexer bug
2) now support string to access character at index quickly
   eg (def x "Hello")
        x[0]  ; => "H" which is also string with length 1
3) change set! function
   now support e.g.:
   (def x #[1,2,3])
   (set! x[0] 14)   ;; x => #[14, 2, 3]