see `bc_inverse` which points to `blockinverse_1x1`, `blockinverse_2x2`, and `reblock_2x2`.  

I can actually now invert arbitrarily large block matrix expressions (with invertible blocks on the diagonal).  It gets messy pretty quickly but it's fun!