adds deck tests
shuffles deck when cards get low
adds error checking to IO