Refactor recording api methods and fix logic

Refactored code of recording api setup, teardown, and
endpoint functions.

Added a get_current_state_str() method to Multimedia to make some code
in recording api cleaner.

Fix to recording api logic determining next_id.
Fix to test_server.py teardown to undo patching to media_dict

closes #629
Might as well condense these two to make it obvious that they are the only things in each dict.

```python
record.media_info = {
    '1': {
        'status': Multimedia.NULL,
        'filename': 'mock_media_1',
        ...
    },
    '2': {
        ...
    },
}
```