compiler: Allow SELs to not have side effects

If a self-executing lambda has a body without side effects and is
applied with operands without side effects then the entire SEL
expression doesn't have side effects. This allows constructs like
(define ... (let)) be removed if they're unused as the (let) is
converted to a SEL
stdlib: (read-line) and cleanups

- Implement (read-line). This can be implemented very efficiently as the
  normal std::getline() works correctly with UTF-8. This means we can
  consume the line in a single pass, validate its UTF-8 and copy it
  byte-for-byte to a new StringCell.

- Introduce an internal (define-input-proc) helper in (scheme base) to
  unify the definitions simple port input procedures.

- Have StringCell cast its UTF-8 data to the actual expected type
  instead of an alias.
runtime: read-bytevector, SharedByteArray cleanups

- Move non-trivial SharedByteArray functions to SharedByteArray.cpp.
  Originally SharedByteArray was only a header file so these were
  implemented inline. Now it makes sense to relocate the implementation
  to the .cpp to reduce compile times and generated code size.

- Add SharedByteArray::destructivelyResizeTo. This is a wrapper around
  realloc() that allows exclusive byte arrays to be resized. This is
  used by (read-bytevector) to shrink its SharedByteArray to fit the
  number of bytes actually read.

- Implement (read-bytevector)
stdlib: Fix bufffer => buffer
Update to Scala 2.11.4
compiler: Fix cost miscalculcation for InvokeLike

functionCallCost was added to gcBarrierCost twice. This was caught by a
new warning in Scalq 2.11.4