Change pop's only argument to an output.
Replace argument register with general-purpose nonvolatile.
Add swallow_newlines, tweak swallow_sentinels.

Both now return self (can safely be used as the body of accept blocks).
Only append to @data if not done; return last data read.

This allows conditional blocks and such to just work the way they ought
to without having to jump through hoops to avoid accidentally appending
something to @data because #line is built to do that already.

Now #line also returns its last-read data -- makes it possible to have
nested #line calls that feed back into each other.
Add generate/add_instruction methods.
Just return the last instruction from conditionals.

Also uses #generate/add_instruction instead of modifying
the @data/@instructions ivars itself.
Make #instruction use generate_instruction.
Add primitive let[*!] blocks.

Syntax is fairly simple:
  let name_a, name_b, name_c[, ...] {

  }

Inside a let block, any defined name is assigned to general purpose
registers. Currently, this just means they're assigned in order.

Default let block behavior is that if a volatile register is aliased,
it is pushed at the beginning of the let block and popped at the end to
avoid stomping variables above it in the stack.

Because the default behavior isn't always desirable, there are two
optional forms of let blocks, depending on the symbolic suffix of the
keyword:

  let* -- preserve no registers. This simply maps the names as aliases
    of registers and nothing else.
  let! -- preserve all registers by pushing them onto the stack and
    restoring their values when done.

There is currently no way to assign names to specific registers, though
I'll probably work on that next (since registers are in memory, you may
at some point decide that it makes sense to try to have sequential
access to certain registers).

ip, ebp, esp, and rp are all reserved names and cannot be re-defined by
a let block.
Remove parenthetical from note about chunk offsets.
User assignment operator; tweak imod to use i64.

imod instruction now uses 64-bit signed integers since it makes more
sense to do so if you want an integer modulo.
Restore previous rounding in ROUND/RINT instructions.