Add playState and tests

When does pause() put you in idle? I think I will need to read the spec.