Namer

Still working on making the test cases pass, but I very much like the visitors :) .
`arguments(0)` (i.e. `Select(Ident("System"), "out")`, in this case) is straight from the parse tree, we'd have to introduce a special case in the parser to exclude that.