Add anaphoric versions of map, filter, and foreach

Anaphoric macros reduce the need to specify a lambda by binding a
special name in a form passed as a parameter to the macro. This allows
you to write more concise code:

    (= (list (--filter (even? it) [1 2 3 4])) [2 4])

This patch just adds a few basic ones. Other forms that can be
converted to anaphoric versions include reduce, remove, enumerate,
etc.
Add --each-while and --map-when

A couple of more macros:

    hy> (--each-while [1 2 3 4 5] (< it 3) (print it))
    1
    2
    3
    hy>

```--each-while``` continues to evaluate the body form while the
predicate form is true for each element in the list.

```--map-when``` uses a predicate form to determine when to apply the
map form upon the element in the list:

    hy> (list (--map-when (even? it) (* it 3) [1 2 3 4]))
    [1, 6, 3, 12]
Make --map-when accept a predicate function instead of a form

This makes it look a little cleaner:

    (list (--map-when odd? (* it 3) [1 2 3 4 5]))
Move anaphoric macros to contrib module
Add documentation and doc strings
Fix typo in ap-each
Fix typo in ap-map-when
Remove james@agentultra.com from copyright in core/macros.py
Merge pull request #338 from agentultra/anaphoric-macros

Anaphoric macros