Teach the VM how to output human-friendly stacktraces

When an error isn't caught by a catch expression, the VM sends the
faulty stacktrace as a string with a small message to the error logger.
As it is already a string representation and not the stacktrace itself,
the result may as well be readable and human-friendly.

Example:

  1> spawn(fun () -> (fun () -> 1 + foo end)(), 42 end).

  =ERROR REPORT==== 5-May-2013::15:28:15 ===
  Error in process <0.45.0> with exit value: badarith
  #1      erlang:'+'(1, foo) <BIF>
  #2      erl_eval:do_apply/6 ["erl_eval.erl":573]
  #3      erl_eval:exprs/5 ["erl_eval.erl":118]