spectral: implement more efficient linear operator interface

2 jobs for master in 72 minutes and 38 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Test
passed #4858
amd64
job_clang_amd64

01:12:37

passed #4857
amd64
job_gcc_amd64

00:59:18