0m4.128s: Specify <integer> type on *pc* / *nvals*.

This lets us perform machine level math.

real  0m4.128s
user  0m4.124s
sys 0m0.004s
0m2.054s: Specify additional type constraints.

Using <simple-object-vector> lets us use sealed
definitions for things like element / element-setter
which avoid a lot of generic dispatch.

real  0m2.054s
user  0m2.048s
sys 0m0.005s
0m1.869s: Use vector-element.

Try using vector-element to work around generic dispatch with *env*.
This is ugly and I don't really like it.

real  0m1.869s
user  0m1.864s
sys 0m0.004s
0m1.834s: Specify no result values.

This avoids a bit of extra work that was happening.

real  0m1.834s
user  0m1.830s
sys 0m0.003s
0m1.348s: Make an actual class for <instruction>

This lets us get rid of a lot of vector operations and just do
constant slot offsets.

real  0m1.348s
user  0m1.342s
sys 0m0.004s
0m0.790s: The value from $code is an <instruction>.

This lets us avoid generic dispatch here on opcode.

real  0m0.790s
user  0m0.786s
sys 0m0.003s
Use the simple-profiling tools.
0m0.705s: Improve lref / lset efficiency.

By specifying <integer> args, we can ditch vector-element
and go back to element. By specifying the type that we get
out of the first element call, we can avoid further generic
dispatch. This could be even better if *env* was better
typed.

real  0m0.705s
user  0m0.702s
sys 0m0.003s
0m0.655s: Disable bounds checking.

real  0m0.655s
user  0m0.651s
sys 0m0.003s
0m0.583s: Disable more bounds checking (exec!).

real  0m0.583s
user  0m0.579s
sys 0m0.003s
0m0.497s: More specific typing for *instructions*.

This is kind of hacky and ugly, but it improves performance.

real  0m0.497s
user  0m0.493s
sys 0m0.003s