RecursionError in pyjl JuliaMethodCallRewriter & is_list
For input
```py
import io

class X:
    io = io

    def y(self):
        rawio = io.FileIO("abc", "wb")
```
`main` backtrace:
```py
...
pyjl/transpiler.py:29: in visit_Call
    rv = is_list(node.func.value)
py2many/tracer.py:68: in is_list
    and is_list(var.assigned_from.value)
py2many/tracer.py:68: in is_list
    and is_list(var.assigned_from.value)
py2many/tracer.py:68: in is_list
    and is_list(var.assigned_from.value)
E   RecursionError: maximum recursion depth exceeded in comparison
```

v0.2.1 backtrace:
```py
Traceback (most recent call last):
  File "./py2many.py", line 16, in <module>
    main()
  File "./py2many/cli.py", line 354, in main
    rv = _process_once(settings, source, outdir, env=env)
  File "./py2many/cli.py", line 278, in _process_once
    transpile(
  File "./py2many/cli.py", line 104, in transpile
    tree = rewriter.visit(tree)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 363, in visit
    return visitor(node)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 439, in generic_visit
    value = self.visit(value)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 363, in visit
    return visitor(node)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 439, in generic_visit
    value = self.visit(value)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 363, in visit
    return visitor(node)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 439, in generic_visit
    value = self.visit(value)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 363, in visit
    return visitor(node)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 448, in generic_visit
    new_node = self.visit(old_value)
  File "/usr/local/Caskroom/miniconda/base/lib/python3.8/ast.py", line 363, in visit
    return visitor(node)
  File "./pyjl/transpiler.py", line 19, in visit_Call
    if is_list(node.func.value) and fname.attr == "append":
  File "./py2many/tracer.py", line 70, in is_list
    and is_list(var.assigned_from.value)
  File "./py2many/tracer.py", line 70, in is_list
    and is_list(var.assigned_from.value)
  File "./py2many/tracer.py", line 70, in is_list
    and is_list(var.assigned_from.value)
  [Previous line repeated 979 more times]
  File "./py2many/tracer.py", line 65, in is_list
    var = node.scopes.find(get_id(node))
  File "./py2many/scope.py", line 58, in find
    defn = find_definition(scope, "vars")
  File "./py2many/scope.py", line 52, in find_definition
    if get_id(var) == lookup:
  File "./py2many/analysis.py", line 19, in get_id
    if isinstance(var, ast.alias):
RecursionError: maximum recursion depth exceeded while calling a Python object
```