Allow --app flag to be passed on mix new

  Allows path to not follow app name conventions
Rewrite IO.ANSI tests to match new behavior
Bring back original tests for IO.ANSI

To avoid conflict and preserve compatibilty, the new tests use the
functions `IO.ANSI.format/2` and `IO.ANSI.format_fragment/2`.
Change IO.ANSI tests to assume chardata is returned
Implement IO.ANSI format/2 and format_fragment/2
Put IO.ANSI.reset inside a list before concat'ing
Add docs to format/2 and format_fragment/2
Add test case for nested improper lists
Reimplement IO.ANSI do_format

This avoids copying partial lists, and handles nested improper lists.
Fix IO.ANSI doctests
Fixed typos in Mix.Tasks.Clean docs
Merge pull request #2566 from jwarwick/mix_clean_typo

Fixed typos in Mix.Tasks.Clean docs
Exit on GenEvent call, move stream to its own module
Remove bug where access/update was incorrectly filling values with maps
Fallback to no tab expansion if not supported
Merge pull request #2570 from chyndman/iex-expand-fun-fallback

Fallback to no tab expansion if not supported
Docs: ensure docs for Dict use full variable names

The following variable switches have been made:

 * `d` has been changed to `dict`
 * `a` has been changed to `dict1`
 * `b` has been changed to `dict2`
 * `d1` has been changed to `dict1`
 * `d2` has been changed to `dict2`

 This fixes #2574
Merge pull request #2575 from Gazler/docs/dict

Docs: ensure docs for Dict use full variable names
Docs: change Dict.merge description to read more naturally

Previously there was an additional "dict" - this is as a result of it
previously saying "dict `a`"
Merge pull request #2576 from Gazler/docs/dict

Docs: change Dict.merge description to read more naturally