Implement UDP
add pointer(s) for strings, change UTF32String.chars to .data for consistency
remove Scheduler
disable a test of source_path() which was invalidated by removing the Scheduler
restore parent task reference to Tasks
fix remaining issues from removing Scheduler
since jl_task_t->last can now be null (if the thread hasn't started), let the gc know
remove unnecessary changes
more cleanup of Scheduler removal change
Fix spelling mistake
proposed current_module behavior for tasks

First, we keep track of whether a task has asked to be in a particular
module (e.g. by initiating a source file load). If it has, then
current_module is always set appropriately for that task. That should
be uncontroversial.

Next, if a task doesn't care what module it is in, use the
current_module from its parent task. This is similar to the previous
commit's behavior of setting task->current_module at task creation,
except that it sees changes in the parent task's current module. So if
the parent task finishes loading something, the spawned task won't
think it is still inside that module. In other words, remember where
we got current_module rather than remembering the module itself.
Introduce $(build_shlibdir)

Abstracts away the fact that Windows wants shared libraries to be in $(bindir) whereas other operating systems prefer their shared libraries and executables separated
General cleanup of .dll installation

Also removal of .SILENT rule
Fix MCJIT issues

All of our problem were related to naming. Most notably:

The jlcall wrapper:
Since they are in the same module as the original function, LLVM will prevent name collision as
appropriate, by doing it's own uniquing, e.g. julia_foo1, becomes julia_foo12, however, if we're
not careful, 11 functions later things go BOOM

Not resetting global unique:
When I originally wrote this code, precompilation did not exists, and I failed to take into account
the fact that the symbol from the generated functions will be visible in the new process (llvm dlsyms
all loaded modules including the system image). Thus if you have just the right combination of
function and globalUnique, you'll run into the system image.

Both of these issues cause the wrong function to be executed at run time, with the corresponding
chaos. Note that this was never an issue during system image building, because we emit everything
into the shadow module where LLVM will take care of it.

I also added a unqiue to the julia_gv global variables. This isn't strictly nessecary from a
correctness point of view, but it helps when looking at IR dumps from several modules.

Also, those linalg tests take forever...
Fix a warning on linux
propagate exception on wait() or yieldto() on a task in the exception
state

don't print fatal error for non-root task without exception
handler. this is not fatal and in fact can happen regularly.

small cleanups to yield_until()
Added get! for Dicts

* Refactored setindex! into ht_keyindex2, for use by get! and setindex!
Add docs, do-block function for get!
cleanup and code reorg: move scheduler code to task.jl

now multi.jl deals only with distributed parallelism

remove no-longer-used WeakRemoteRef
Merge pull request #5687 from JuliaLang/jn/no_scheduler

remove Scheduler