compiler: Split {Arithmetic, Number}ProcSuite

This matches the split that was done in the stdlib and reportproc a
while ago
compiler: Convert iv.Constant* to case classes

This makes pattern matching and construction of constant intermediate
values more clean. This mostly has an effect on the reportproc planner
which matches and produces many constant values.
compiler: Static planning for (expt 2 _)

Statically plan (expt) for exact powers of 2 between 2^0 and 2^62. These
come up frequently and the (expt) stdlib path is very heavyweight due to
supporting floating point values.
compiler: Move SharedByteArray to binding/

util/ is for standalone utility code. However, SharedByteArray is part
of how we represent strings, symbols and bytevectors. Move it in to
binding/ along with the rest of our cell representation code.
Update to scopt 3.3.0
runtime: Reformat in spell fix comment
compiler: Reduce source location calculations

ExtractLambda was calculating the start line of every lambda for use by
debug info even if debug info wasn't being generated. Instead just store
the full SourceLocation and let DebugInfoGenerator lazily calculate the
start line if needed.