libgeda: Refuse to connect nets inside symbols with other nets.
A libgeda crash bug was caused by the pathological use case of putting
nets inside symbols. Since the file format does not specifically
forbid this, libgeda must cope with this gracefully. Specifically,
o_net_consolidate() was causing a crash when attempting to merge a net
inside a symbol and a normal net. The underlying cause was found to
be that the connection tracking system did not cope properly with
encountering connectable objects other than pins inside symbols.
Merely fixing the net consolidation algorithm exposed other bugs (for
example, nets inside symbols should NOT rubberband!)
This patch adds logic to s_conn_update_line_object() as follows:
1) If two objects are both not inside symbols, they may connect.
2) If two objects are inside the same complex, they may connect.
3) If an object is inside a complex, it must be a pin to connect to
objects outside the complex.
Closes-bug: lp-994361