Add playState and tests

we'll need to update pause() etc. to take us into the pending state.