Allow Macro.escape([1|2])

This fixes #1646
Merge pull request #1648 from pminten/quote-improper-lists

Allow Macro.escape([1|2])
Allow any function identifier as a variable, closes #1649
Remove empty Tuple module
Add Enum.slice/3
Merge pull request #1650 from ericmj/enum-slice

Add Enum.slice/3
Update CHANGELOG
Add a count guard check for slice
Revert "Merge pull request #1645 from vanstee/string-split-repeats"

This reverts commit fb30101632f8e1ee94bb770ff858791aa6cba6a3, reversing
changes made to c348eb7cc58459c3ff8f117c0e7a96384ad7734b.
Implement `Stream.flat_map/2`

Fixes #1642
Use ifnone in Enum.find for all collections
Merge pull request #1654 from ericmj/fix-enum-find

Use ifnone in Enum.find for all collections
Merge pull request #1652 from vanstee/stream-flat-map

Implement `Stream.flat_map/2`
Enum.slice returns nil when start is out of bounds
Accept the `trim` option when splitting strings

By default `trim` will be set to true. Because `:binary.strip` only
removes empty strings from the end of the result, we have to apply a
filter to remove empty strings from the beginning before returning.
Accept the `trim` option for `Regex.split/3`

By default `trim` will be set to true. However, since the `global` option
was implemented with the `parts` option (`{ :parts, :infinity }`), we
have to apply a filter to the final result to support `trim`.
Merge pull request #1655 from ericmj/fix-enum-slice-oob

Enum.slice returns nil when start is out of bounds
Merge pull request #1651 from vanstee/string-split-trim

Add support for `trim` option to `String.split` and `Regex.split`
Optimize split implementation
Make it clear Dict.merge expects an enum that yields two-item tuples