I decided to go with Rockoon1's suggestion and go with 6 arrays for the cube.
My test bed is in command line c++. It took me a while to write out all the transformations, but I think I figured it all out.
Here is what I got so far.
cube_test_01 2d test, with my cube display. Most of my transformations use a 2d rotation somewhere.
cube_test_02 Rotate face.
cube_test_03 Rotate top row.
cube_test_05 Rotate right column up with different display.
cube_test_06 Same as the last one, normal display.
cube_test_07 Grid, from rotating the middle slice on each axis.
I got the rotations currently in 3 functions.
rotateFaceClockwise(int slice)rotateTopRowLeft(int slice)rotateRightColUp(int slice)
Now I just got the hard part of telling it how to solve.