Add config reloader

Here is a working config reloader for #6. A more complicated version could be created which makes calls for individual handlers (instead of restarting a supervisor) but given how this will be used I did not think it was worth it.

Unfortunately the tests print out the `logger` application stopped a lot. I think this can be solved with `capture_io` or `capture_log` but it is a pain because `:error_logger_tty_h` links to `:user`. I couldn't get this to work and the `error_logger_tty_h` adding on stop test to pass. @josevalim will probably want to solve this before merging into `elixir`.
It is required to be set here because of the following:
```elixir
Application.load(:logger)
Application.put_env(:logger, :handle_otp_reports, true)
Application.start(:logger)
Application.stop(:logger)
Application.put_env(:logger, :handle_otp_reports, false)
Application.start(:logger)
## This must return an empty set otherwise will re-add the deleted handlers again on stop
Application.get_env(:logger, :deleted_handlers)
```