Cleaned up parsing/lexing code

Now the lexer stores tokens implicitely allowing the removal
of some helper functions in the parser.

Additionally length checking is performed on the generated bytecode.
This limits the length of functions significantly, however from a
few simple tests it seems the length of the bytecode roughly equals
the length of the source code. This already puts a 16 bit limitation
on the input, so putting a 16 bit limitation on the output shouldn't
be too impeding and should help catch potential bugs. Also, the 16 bit
jump limitation is no longer a concern.
Rearranged var layout once again

Objects will need to have a seperate destructor called than tables.
So the objects have been rearranged so 4 types need special reference
counting and 2 share the table reference counting.

Honestly I like this layout the most so far, despite needed functions
to stay aligned, so hopefully this doesn't need more changes.

Here is the current layout:
nil [00000000000000000000000000000|000]
num [          double num         |001]
bfn [               |   var f(a)  |010]
sfn [  tbl scope  |c|  var f(a,s) |011]
tbl [   tbl tbl   |c|   ref tbl   |100]
obj [   tbl obj   |c|   ref obj   |101]
str [  off  |  len  |   ref str   |110]
fn  [  tbl scope  |c|   ref fn    |111]