This is extremely nice to have.  I was planning on making something like this when reworking some stuff in the spa/compare.py system, and I think computing products is common enough to warrant a class like this.  

Should we also change ```networks/circularconvolution.py``` to make use of this?