Better error messages for fn/defn w/o arglists

When (fn) or (defn) does not get an arglist as first/second parameter,
emit a more descriptive error message, rather than an ugly traceback.

Fixes #716.

Reported-by: Joakim Tall
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Merge pull request #717 from algernon/f/defn-better-errors

Better error messages for fn/defn w/o arglists
Fix error when 'let' context contains a non-symbol non-list
Merge pull request #715 from ALSchwalm/master

Fix error when 'let' context contains a non-symbol non-list
Fix Travis with PyPy (again)
Merge pull request #726 from kirbyfan64/travis3

Fix Travis with PyPy (again)
Gender-neutralizing line with "Mrs", which is a problematic title

See http://cognoscenti.wbur.org/2014/09/30/gender-politics-feminism-ms-miss-mrs-amy-carleton
as a light introduction to this.
Implement keyword argument passing... (foo-func 1 2 :kw1 "bar") works!

This code is heavily, *heavily* based off of Guillermo Vaya
(willyfrog)'s work... instead of defining its own keyword arg though, it
uses the "standard" :kwarg type, which is the main difference from
willyfrog's original branch.

Included tests and some documentation in the tutorial.

Also documented "apply" separately as an example of reproducing
*args and **kwargs.
Dashes!  Dashes everywhere!  ... in the tutorial

The tutorial used underscores in Hy code everywhere.

Updated all examples to use dashes, as per Hy convention.
paultag likes iter(exprs) better than exprs.__iter__()

We do what the BDFL says lest he shoot us with magic wizard sticks.
Removing trailing whitespace from example
Explaining that :keyword syntax is for post 0.10.1 only