Improve OptionParser switch validation

This adds a third element to the tuple returned from OptionParser.parse/2 when the value for an option doesn't match its switch type.
Use list concatenation operator instead of function
Add documentation for invalid switches
Change OptionParser to always permanent invalid list

The tuple returned from OptionParser now always includes the third element (invalid options list).
Update OptionParser test for permanent invalid list
Update mix tasks for OptionParser permanent invalid list
Converge store_option and validate_option in OptionParser
Add Enum.flat_map

Returns a new collection appending the result of invoking `fun`
on each corresponding item of `collection`.
Merge pull request #1578 from guilleiguaran/enum_map_flatten

Add Enum.flat_map
Add location of overridden def in error message

When a def is overridden, for example because there are multiple
clauses with the clauses of a different def are between them, it
is nice to know where the def that was overridden starts.

This should fix #1559.
Add test for overridden def warning
Use relative filename in redefined def warning

The absolute filename can be a bit long, which makes the warning
slightly harder to parse for humans.
Put overridden def test in warning_test.exs

This removes the need for a separate fixture.
Fix bug on sorting algorithm on certain branches, closes #1580
Ensure proper line on interpolations inside heredocs, closes #1581
Merge pull request #1579 from pminten/add-location-of-overridden-def

Add location of overridden def in warning message
Recompile project if elixir version changes
Merge pull request #1577 from ericmj/mix-recompile

Force recompile of project when elixir version changes
Pass Line and File as arguments to we don't read the table twice
Get rid of unused variable warning