Simplify the logic of translate_assert

There is no visible need to pass the fallback function through all the
cases of translate_assert. It's makes the code simpler if we keep
the conditional logic at the beginning.
Merge pull request #1917 from alco/simpler-translate_assert

Simplify the logic of translate_assert
Add Stream.resource/3
Ensure full alias is stored in context_modules
Fix Version.match? with ~> and -dev versions
Merge pull request #1919 from meh/master

Fix Version.match? with ~> and -dev versions
Added URI to doc_test list
Cleaning up ExUnit.CaptureIO docs
Merge pull request #1921 from jwarwick/capture_io_docs

Cleaning up ExUnit.CaptureIO docs
Convert to new iteratee-based enumeration

Details are described in the Enumerable docs.
This new implementation allows us to implement interleaving
functions (like zip) while avoiding a huge penalty in regular
enumeration.
Make the reducer function part of the suspended continuation
Improve docs
Add Stream.zip/2
Ensure certain streams and enumerables are zippable
Change Enumerable.count/1 and Enumerable.member?/2 to return tagged tuples

The motivation behind this change is to not force every application
to implement count/1 and member?/2 manually. It also allows us in
the future to add functions like Enum.counted?/1 that will return
true if count is pre-calculated.
Start sharing reducers in between Enum/Stream
Add Stream.each/2
Add Stream.take_every/2
Support Stream.take/2 with negative count
Support Stream.drop/2 with negative count