Simplify coupling syntax by omitting `inputs` and `outputs`

Coupling syntax could be simplified.

Now we have:

comp_a.outputs["Out_1"] >> comp_b.inputs["In_1"]

we could also have just this:

comp_a["Out_1"] >> comp_b["In_1"]

or

comp_a("Out_1") >> comp_b("In_1")

For backward compatibility (and ease of use with IOList), we could just not allow this syntax if input and output names of a component overlap.

Edited by Martin Lange