Ensure compilation does not leave random spurious data on failure

Prior to this patch, the parallel compiler could leave spurious
processes and the module definition could leave stale data
in the elixir_modules table.

The issue has been fixed by emitting the proper exit signals
and by using monitors.
- adding example for float-32
- making it more clear that ther order of type options doesnt matter
Merge pull request #2900 from edmz/master

Making type options a bit more clear, adding float-32 example
Clarify \x applies to unicode codepoints
Add Enum.minmax and Enum.minmax_by
Remove unnecessary binding
Merge pull request #2901 from xavier/enum-minmax

Add Enum.minmax and Enum.minmax_by