Ngspice pipe mode

The ordec.sim subprocess backend currently uses Ngspice in pipe mode (ngspice -p). Unfortunately, Ngspice has slightly different I/O behavior depending on whether it is built with libreadline, libedit or neither.

Behavior with neither libreadline nor libedit:

$ echo -e "echo hello\necho world\nquit" | /home/app/ngspice/install_min/bin/ngspice -p
ngspice 1 -> hello
ngspice 2 -> world
ngspice 3 -> ngspice-44.2 done

Behavior with libreadline:

$ echo -e "echo hello\necho world\nquit" | /home/app/ngspice/install_readline/bin/ngspice -p
ngspice 1 -> echo hello
hello
ngspice 2 -> echo world
world
ngspice 3 -> quit
ngspice-44.2 done

Behavior with libedit:

$ echo -e "echo hello\necho world\nquit" | /home/app/ngspice/install_editline/bin/ngspice -p
hello
world
ngspice-44.2 done

These differences are addressed in ordec/sim/ngspice.py.

TODO: Add automated testing for this in container, such as:

PATH=/home/app/ngspice/install_min/bin:$PATH_ORIG pytest tests/test_sim.py
PATH=/home/app/ngspice/install_readline/bin:$PATH_ORIG pytest tests/test_sim.py
PATH=/home/app/ngspice/install_editline/bin:$PATH_ORIG pytest tests/test_sim.py