compiler: Remove stray file
compiler: Application planning cleanup

- Have planWithOperandValues directly update the state itself instead of
  passing back the procedure's type and expecting the caller to do it.
  This means that occurrence typing now works for (apply) and
  (call-with-values) in some restricted cases as they were previously
  ignoring the returned procedure type.

- In addition to constraining our operand's types constrain the type of
  the procedure value itself after a successful application. This is
  useful if an untyped or partially typed procedure value is applied
  multiple times - the subsequent applications can have their type
  checks removed.

- Add ReportProcedure.planFromExprs method and move the special planning
  for (apply) and (call-with-values) to their appropriate report
  procedure object

- Move the list of ReportProcPlanners from iv.KnownUserProc to a new
  ReportProcPlanner companion object

- Don't pass around the applications context location explicitly; depend
  on the plan having the correct location already

- Small formatting and import cleanups
compiler: Make ps.WorldPtrValue a singleton

An instance of ps.WorldPtrValue was created for each function to
represent the world pointer argument for that function. This value is
passed through the entire planner and tracked in PlannerState and
PlannedFunction.

The intent was to use it as a canary value to ensure the caller actually
had a world pointer. However, functions typically always start planning
with a world pointer and then remove it at the end of its not needed.
Passing around the world pointer doesn't prevent it from being
erroneously removed at the end of planning. Also, every allocating step
took an implicit world pointer that was only actualised much later in
PlanCellAllocations

Instead make ps.WorldPtrValue a singleton that means "world pointer for
the current function". Steps that need the world pointer now take it
implicitly; it appears in their inputValues but not in their argument
list.

This simplifies the planner and reduces the size of some large
signatures. Minimal changes were required for codegen as it still treats
the world pointer as a normal temp value.
stdlib: Implement char-ci=? family

These are the case insensitive versions of character comparison
functions.
Fix missing export of "else" and "syntax-rules"

- Make "syntax-rules" a primitive and have ParseSyntaxDefine look for it
  instead of a literal symbol name

- Remove Primitives.Arrow (i.e. "=>") as it's unused by the compiler.
  Instead, create a macro with no syntax rules in (scheme base) to
  emulate the same effect

- Use the same empty macro trick to add "else"
stdlib: Implement (scheme r5rs)

This exports the identifiers defined by R7RS to exist in (scheme r5rs)
with the exception of (load)/(eval) and related procedures.

Note that this is only library support for R5RS compatibility. Ideally
the compiler would have a "r5rs" dialect that automatically included
(scheme r5rs) and enabled case insensitive parsing. However, this
requires case insensitive parsing to be supported first.