Slicing a HyList makes the same kind of object again
Make empty macroexpansions do the right thing
Add a cons object and related mechanisms

Closes: #183
Reorganize documentation.
README.md: Add Adderall to Hylarious Hacks

Signed-off-by: Gergely Nagy <algernon@balabit.hu>
Merge master onto pr/473
Merge master onto pr/482
Update tutorial.

- Fix a couple of typos
- Use open() built-in instead of file()
- Update (for) and (with) examples
Move all badges to top of README.
Merge master onto pr/486
Merge master onto pr/471

Conflicts:
	hy/core/language.hy
hy.contrib.walk: New contrib module for walking the Hy AST

The hy.contrib.walk module provides a few functions to walk the Hy AST,
and potentially transform it along the way. The main entry point
is (walk), which takes two functions and a form as arguments, and
applies the first (inner) function to each element of the form, building
up a data structure of the same type as the original. Then applies outer
(the second function) to the result.

Two convenience functions are provided: (postwalk) and (prewalk), which
do a depth-first, post/pre-order traversal of the form.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
hy.contrib.walk: Add (macroexpand-all)

This function will recursively perform all possible macroexpansions in
the supplied form. Unfortunately, it also traverses into quasiquoted
parts, where it shouldn't, but it is a useful estimation of macro
expansion anyway.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
hy.contrib.walk: Add support for walking cons cells

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>