Disallow &-partial calls on the right side of |>
Implement assert_compile_fail

The format_rescue function has been found useful in multiple instances,
so it made sense to generalize it into its own assertion.
Convert project stack to records
Dont run any tasks recursively from another task

The only time a task may run recursively is after a new project has been pushed to the stack.
Merge pull request #1198 from ericmj/patch-1194

Dont run deps tasks recursively when they are started non-recursively
Optimize downcase, upcase and rstrip in Unicode
No need for accumulator on downcase/upcase
Add a few sanity check tests for upcase & downcase
Reimplement =~ to use Regex.match? or String.contains?
Use =~ with strings where it makes sense
Mostly done. Still need to fix warning printout.
Experiment with how to pass back status. process dictionary doesn't work.
a little closer, status is passed to main process
Pass exit status to callback so we can decide there whether to stop or not.
Fix tests that expect the parallel compiler callback to only pass one parameter.
Update parallel compiler callback documentation
Unwind a lot of the wrong direction, output warnings based on warnings-as-errors setting
Implement José's suggestions.

1. Detect all places in elixir_errors:handle_file_warning/3 where we
output something with io
2. Change those places to go through an internal function that will
call elixir_compiler:get_opt and figure out if we should print to
stdout or stderr and act accordingly
3. In the same function above, whenever we print a warning as an error,
we should store somewhere that a warning as an error happened. I
recommend storing that in the elixir_code_server gen server
4. Provide a Code.compilation_status that would return it
Don't pass warnings-as-errors to module since it isn't needed
print compiled even if compilation_status is not :ok it may have been from another file. Halt on an :error