Feature/algebra

Bugfixes and Tests for CSC ops.

Still going through pull request initially, but I'll merge it. Just so that there's a record and notification until I get more comfortable.
it would be nice to be able to still have + in the presence of just a semiring. (e.g. for booleans)