Implement the . attribute access DSL

This fixes #399
Add tests for the attribute access DSL
Add documentation for the attribute access DSL
Make first and rest fns instead of macros

car and cdr are still macros, but I'd recommend either making them
fns or removing them.
Added docs for apply
Noted that args are optional with apply
Add callgraph stuff. Slick look.
Adjust (for) to just use itertools.product

 This is to avoid nesting in for loops, helping make clear
 what (break) and (else) do.

 This commit is hereby dedicated to @nedbat
add test for new for logic.
Add handling for (for []). Nice catch, @olasd.
Fix a few typos in the tests. Thanks again, @olasd
slice is amazing, @olasd is amazing, I love everything.
Merge master onto pr/429
Add note about underscore/dash shadowing
Added docs for unquote and unquote-splice
Merge branch 'master' into pr/430
Adding a simple `coll?` function to the core

* hy/core/language.hy:
  -Added a simple coll? function that checks whether the given argument
  is an iterable and not a string,
  - Also replaced the check in `flatten` by coll?

* tests/native_tests/core.hy: Tests updated for checking coll?
docs: update docs with coll? functionality
Merge master onto pr/428
Merge branch 'f/is-coll' of https://github.com/theanalyst/hy into theanalyst-f/is-coll