Fixes device resetting partially, surfaces will not be usable after a
reset because I free them from memory now and cleanup dangling pointers. I
also had a dangling pointer to the backbuffer which was causing display
reset to fail. The only thing to do now is make default pool textures
store a copy of themselves in system RAM when a reset occurs and make them
restore themselves during OnResetDevice()