Add enqueue method

Unlike `runner.add`, which adds a callback to the end of the queued methods, `runner.enqueue` adds to the start. Because the running happens in the reverse order that callbacks are added, this means that anything using `enqueue` will happen at the *end* of the run loop.

Example use: adding a callback to be run on the next frame that needs to run *after* all queued entities have been created.