Added an optional argument 'single' to attach_list

Using `@attach_list('list', 'item', epsilon=True)` will result in
the following productions:

    list : list item
    list : item
    list : /* empty */

Adding `single=False` will make it:

    list : list item
    list : /* empty */
Added a `attach_sep_list` decorator that functions like `attach_list`

Example:

    @attach_sep_list('list', 'item', 'T_COMMA')
    def blah(parser, *children):
        return auto_collect(ListNode, children)

It denotes a separated list (whereas `attach_list` requires no
separator). It can be used with `auto_collect`. The only other
requirement is that the class passed it to must be a subclass of
ListNode.
Made Nodes iterable