Improved "Executable" runtime

This commit improves the way an object implementing Arpk::Executable
handles its runtime.  This introduces the "terminated" status to the
mixin, as well as a single exception-catching loop that manages the
suspension state.  Before this loop begins, #init_runtime() is called to
ensure that any relevant variables which must be retained across
invocations of #runtime() are present and defined.

As a result, #runtime() is called on each iteration when the object is
neither suspended nor terminated.  Should an executable be terminated
(or encounter a fatal error), it will call #end_runtime() to perform any
necessary cleanup.