Add length method to tokens.

Strings get a special case length where 2 characters are added to
account for the opening/closing punctuation.
Add a distance named argument to read_token.

This can be used to specify that the next token must be within a
certain distance, either in lines or columns, of the last token. So,
if you want to ensure that two tokens don't have space between them
(if you want to make a difference between spaced and unspaced) then
you can specify a distance and read the token using that.
Add a check for character distance.
Add argv[N] / $N, [bits], and named registers as arguments.

Named registers: ip, ebp, esp, rp.

argv[N] and $N both refer to argument registers. It's just the first
argument register + N. So, $0 is the first argument, $5 the sixth, and
so on.

[bits] arguments are bitset arguments, essentially. So, for example,
[0] is the same as 0x1, [1] is the same as 0x2, [3] 0x4, and so on.
This is most useful for multiple bits, however. So, [0 1 2 3] is 0xF.
This is mainly intended to aid when passing register masks to CALL,
PUSH, and POP instructions, since having to pass bin/hex/etc. literals
isn't very pleasant. Note that you can refer to specific registers in
bitset arguments, like [rp argv[0] argv[4] $20] and that's perfectly
fine, so there's no need to keep track of what argv[N] or rp or what
have you map to, though it's probably useful (but it does make it
easier to reassemble bytecode after breaking changes are made to the
VM and such, since you're no longer referring to registers by their
number in the VM, though they will be converted to their VM number).
Increase the number of volatile registers.

Also disables the preserve-all-on-call behavior. As of now, registers
0 through 11 are considered volatile, and all others are non-volatile.
Try to avoid an unnecessary argument push/pop.

If there's no need to push and pop the arguments, don't do so. This
change only applies when call argument registers aren't preserved. By
default, they aren't, so it's not much different and just saves the
need to reorder arguments' registers when doing a CALL.
Use new assembly helper stuff.