Eval fixes

I introduced a bug into evaluate.py when I converted it to sparse matrices that only manifested when using split_components with `axis=1`. This is now fixed.

Additionally, contingency table generation is much faster now when a significant portion of the volume is ignored.