Add String.split_at

While it is straightforward to split a string given
an offset in bytes from its beginning like this

    <<left::[binary, size(offset)], right::binary>> = string

splitting at grapheme boundary or using negative offset
is not so simple. Hence this function.
Merge pull request #2185 from alco/string-split_at

Add String.split_at
Correct Enum.group_by/3 typespec
Inline some map calls
Fix compiler crash for some map literals
mix clean works accross environments
Remove records from IEx
Remove records from EEx
Docfix: write error
Merge pull request #2186 from jsvisa/exunit_case_docfix

Docfix: write error
Use project :description if one is available
Deprecate :env in project config and support MIX_EXS
Pass the relaxed option when downloading rebar

Closes #2152
Make iolist_to_binary/iolist_size a soft deprecation
Fix Elixir tests on Windows, closes #2190
Fix bug in for comprehensions
Revert "Allow overriding of undefined dependency SCM"

This reverts commit 5dd7a2ba3a08df89c5dd159bf66a4b22fe1a3f3f.

Conflicts:
	lib/mix/lib/mix/dep.ex
	lib/mix/lib/mix/dep/loader.ex
	lib/mix/test/fixtures/deps_status/custom/noscm_repo/mix.exs
	lib/mix/test/mix/tasks/deps_test.exs
Improve hex workflow

We do this by automatically starting hex, if one is available,
and by providing a local.hex task, similar to how we handle Rebar.

Note that this does not make Mix depend on Hex, we do this on a
best effort basis (similar to Rebar).
Improve message for rebar errors, closes #2189
Make more deprecations soft, update CHANGELOG