Cleanup the hy.macros module

Add comments to the functions, reorder, make the file clearer
Rewrite the bootstrap macros in hy

This gets rid of the dichotomy between bootstrap.py and macros.hy,
by making both files hy modules.

I added some error checking to make the macros more resilient. The
biggest (user-visible) change is the change in cond, which now only
accepts lists as arguments. Tests updated accordingly.

Closes: #176 (whoops, no more bootstrap)
Rewrite language.hy not to require hy.core.macros

As was intended when the bootstrap and core macros were separated.
Merge branch 'master' into pr/298