Avoid interpreter fallback in timer and app core modules (fixed and rebased)

The core modules app.lua and time.lua are causing an excessive amount
of interpreter fallback, leading to a significant performance penalty.
This changeset removes one of the causes and offers a workaround for
the other one through a configuration option.

The definition of call_timers() in core/timer.lua is moved out of
run_to_time() to avoid generation of the non-compileable bytecode
UCLO (bytecode 51 in the current version of LuaJIT).

The code for detecting dead apps by wrapping them in pcall() leads to
frequent trace aborts due to "NYI: return to lower frame".  It is not
entirely clear what exactly this means and whether it can be avoided
somehow.  A new configuration option "dead_app_detection" is
introduced that disables this mechanism when set to false (defaults to
true).  The options for main() are passed on to breathe() to make this
work.