Format exceptions consistently

The first commit resolves #2231 and introduces `Exception.format_message` and `Exception.format` to format exceptions. It also fixes:
* A slight bug in the displaying of stacktraces in `IEx` when an entry has no application.
* Insures that exception messages and stacktrace are sent in one io request so that they always appears together.

The second commit is quite cheeky and could do the wrong thing in an edge case:
```
Interactive Elixir (0.13.2-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> spawn_link(fn() -> exit(:bye) end)                                                   
** (EXIT) #PID<0.49.0> exited: :bye

Interactive Elixir (0.13.2-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> spawn_link(fn() -> raise(ArgumentError, []) end)                                     
** (EXIT) #PID<0.55.0> exited: (ArgumentError) argument error
    :erlang.apply/2
```