Return $NO_SOURCE when fetching the source code fails
Make start_section/end_section/write_custom_metadata no-ops when profiling is disabled

The fix in c3760a8242105b922a37 avoids the crash but still writes a bunch of
useless empty sections when profiling was enabled and is then disabled.
Fix subtle but potentially catastrophic bug in set_profiler_state

When not using the trampoline, switch_runloop() runs an inner runloop,
potentialy spanning the duration of the whole program.

Since RETURN/RETURNOP perform an implicit PUTBACK, the function effectively
forced the stack to the same point it had when entering the function; in the
best case this caused the wrong value to be returned from Perl, in the worst
case it made the stack pointer point into freed/reallocated memory.