Add scenelet finishers, remove state argument

Scenelets can now include a finish handler, which will be called in the
same frame the scenelet stops running.  Additionally, since scenelet
context now uses 'this', the state argument was unnecessary and
potentially confusing, so I removed it.
Remove unnecessary nested closure for updateShim

Not sure why I did it that way, inner functions can already access
anything from outside, so the extra level of recursion and argument
passing was unncessary.