cleanup julia_init options

this attempts to be more consistent and centralized about initializing julia paths (build_path, image_file, julia_home). this is in an attempt to make embedding julia easier. also, it should help with spawning child processes (by providing more reliable access to the parameters, without dependence of the working directory)

1. moves all configuration options into jl_compileropts
2. computes the abspath/realpath of file paths in the config to avoid issues with chdir causing files to end up in the wrong location

@tkelman @ihnorton @staticfloat
agreed. looks like the comment didn't transfer when I backported this from https://github.com/JuliaLang/julia/pull/8745

annoyingly, this assert can get correctly triggered by `Gtk.jl`, since the module initializers are getting called in the incorrect order / at the incorrect time, given the following code:

file `A.jl`:
```julia
module A
  __init__() = println("init A")
end
```

file `B.jl`:
```julia
module B
  module C
    __init__() = println("init B")
  end
  require("A") # this causes B.C.__init__() to get invoked before A.__init__()
end # B.C.__init__() should have been called here
```