runtime: Use std::sto* instead of strto*

These are new C++11 functions that take STL strings instead of const
char *. This gets rid of some ugly .c_str() conversions in DatumReader
llvmir: Fix misleading test copy-and-paste

The range tests copy and pasted a variable name and comment from the
original test. Remove the duplicated comment and use more accurate
variable names.
llvmir: Add metadata support for call and invoke

call and invoke support range metadata. This can be accomplished using
.withMetadata but it's cleaner to pass it in explicitly like with load.
Prevent creation of invalid characters

- Don't parse characters above 0x10FFFF in either SchemeParser.scala and
  DatumReader.cpp. There is an explicit error message for DatumReader
  but unfortunately parboiled2 doesn't allow much influence over error
  messages

- Change (integer->char) to check the range of the code point and raise
  an error if it's out of range. Unfortunately this prevents reportproc
  planning of (integer->char) for dynamic values at the moment.

- Add range metadata for unboxing characters and calling character
  returning functions now that the range is restricted to the range of
  valid code points.

- Remove checks for invalid characters in the runtime.
compiler: Fix error for (apply) with improper list

In some situations if we were passing an improper list to (apply) it
would raise an arity error. This is incorrect as it's actually a type
error.

- Add improperListMessageOpt to PlanCadr. This will cause PlanCadr to
  assert that the passed pairValue is a list element before attempting
  to convert it to a pair

- Have DestructureList take an improperListMessageOpt that it passes to
  PlanCadr

- Have PlanInvokeApply.withArgumentList pass a specific message as
  improperListMessageOpt to handle improper lists

- Add functional tests to cover more cases of application with an
  improper list.
compiler: Properly locate symbol shorthand

The ast.Pair containing the shorthand was located but the shorthand
symbol itself was not. This changes SchemeParser to locate both.