Refactor the way that Base.include() stack frames are hidden
The matching in _backtrace_simplify_include_frames felt unweildy when
there's several different entry points into the internal frames -
include(), include_string(), eval() and exits from the internal frames -
fl_parse(), simple_eval, and simple_eval internal helper functions.
This change attacks that problem by repurposing debug info for macro
expansions to insert synthetic stack frames with known "file names" as
stack boundaries between user frames and internal compiler frames. The
boundaries are added to the debug info with macros @_hidestack,
@_hidestack_begin and @_hidestack_end.
As part of this, move Core.EvalInto into Base alongside Base.IncludeInto
to make this slightly more natural to mark with @_hidestack. This
movement doesn't seem essential but both these helper structs seem quite
similar and I couldn't see a reason why EvalInto needs to be in Core
more than IncludeInto.