Added StringLiteral#length, StringLiteral#empty? and ArrayLiteral#empty? in macros
Small fix in make_named_tuple
Use some structs to store the lexer's string and macro states
Correctly handle strings inside macros
Treat some keyword inside a def like regular vars/calls: def, macro, class, struct, lib, fun, etc.
Fixed: macro wasn't found when invoked inside a def
Some more macro related methods for arrays, hashes and tuples