Changed package structure. Expand keyword is added.

All visitors are moved to glass_cas/visitors.py
    The visitors will eventually need their own package.

Added a node.copy() method to use instead of the constructor, so that
    visitors.py no longer needs to import node.py which avoid a circular
    import problem.

Added an expand operator:
    expand((x+y)*(a-b)) --> x*a + y*a - x*b + y*b

    Currently it only does distribution of multiplication over addition.
    This is implemented in visitors.Expander.
    Tests are in for what I've written.

Fixed a bug: When calling a user-defined function, the expression
    type was wrong. It always gave UnknownExpr.

    PROBLEM: UserFunction.apply() returns a node, but I called the method
    expecting a number, so I ended up assigning a node to node.value.
    (this is happening in visitors.Reducer.visit). Then Recognizer
    received a node n where n.value is also a node, so it return
    an UnknownExpr object.

    FIX: UserFunction is handled as a separate case in
    visitors.Reducer.visit.