compiler: Track context location when forking plan

This is required to properly locate exceptions while planning type
checks. This has come up now that planning type checks for procedure
types.
compiler: Fix (procedure?) on higher order procs

- If a procedure supports inline application don't explicitly check all
  of its arguments types. There are only a few procedures that support
  inline application so this is hopefully not a correctnes issue within
  that limited set

- Make PlanTypeCheck properly take boxedValue by name to prevent
  boxing values when statically applying a type predicate

- Change LambdaSignatureSuite to use (raise) instead of (procedure?) to
  force the procedure to be planned

- Add unit tests for SatisfiesType on higher order procedure types. This
  worked correctly but wasn't explicitly tested.
compiler: Give KnownProcs unchangeable types

Override withSchemeType and castToSchemeType to ensure that KnownProc
values don't change Scheme types. This ensures their signatures can't
get out of sync with their Scheme types which means we can avoid
explicitly checking their operand types when applying them inline.