Add is_var/1 for use in typespec guards

Allows you to specify a variable without any type contraints.
Move typespec guards to end of spec

Moves precedence of `when` to be lower than `::`.
Compose streams as we go and remove tuples nesting
Improve coverage for streams with nested accs
Simplify how app files are generated and checked
Minor consistency update to Dict.values doc

Adds a period to the end of the first line in the doc, for consistency
with the rest of the module
Merge pull request #1880 from knewter/minor_doc_fix_on_dict

Minor consistency update to Dict.values doc
Ensure symlink_or_copy can override previous symlinks
Also symlink include directory
Make surround_many accept an optional seperator per-invocation, or fall back to module attribute default. Passes tests+doc_tests.
Merge pull request #1882 from christhekeele/surround-many-separator

Make surround_many accept an optional seperator per-invocation, or fall ...
Merge pull request #1868 from ericmj/typespecs

Add is_var/1 to typespecs and move guards to end of spec
iterate -> enumerate
Attempt to improve elixir version error message
Switch Enum.drop/take behaviour for negative counts
Have a convenience function that does not change the lock in umbrella
Implement List.delete_at
Merge pull request #1883 from alco/list-delete_at

Implement List.delete_at
Tidy up list docs
Update CHANGELOG