Here's my progress: I'm pretty excited by it!
Run code/cube_interactive.py to see the cube in action. Faces can be turned using the UDLRFB keys, holding shift for counter-clockwise. Holding 1, 2, etc. will turn a slab at the specified depth. The solve button doesn't do anything sophisticated at the moment: it simply reverses the current list of moves.
A strange "feature" currently is that the cube is just a shell, so you can see through the inner faces when they're part-way turned.
All-in-all, I'm pretty happy with this, and impressed that matplotlib can do this in just a few hundred lines of code!
ENH: make cube GUI more efficient
ENH: add fully interactive cube
Fix solution bug: combine moves
Merge branch 'master' into interactive_cube
BUG: fix solution bug; add to README
BUG: fix zero-magnitude moves in list
ENH: GUI option for inner faces