Fix test failures

Fix a few test failures caused by assumptions about non-deterministic things like in what order keys in a dict will be serialized to JSON

```
======================================================================
FAIL: test_uses_json_format (test_protocol.JSONProtocolTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/test_protocol.py", line 113, in test_uses_json_format
    self.assertEqual(ENCODED, JSONProtocol().write(KEY, VALUE))
AssertionError: '["a", 1]\t{"foo": {"bar": 3}, "baz": null}' != '["a", 1]\t{"baz": null, "foo": {"bar": 3}}'

======================================================================
FAIL: test_uses_json_format (test_protocol.JSONValueProtocolTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/test_protocol.py", line 159, in test_uses_json_format
    self.assertEqual(ENCODED, JSONValueProtocol().write(None, VALUE))
AssertionError: '{"foo": {"bar": 3}, "baz": null, "quz": ["a", 1]}' != '{"quz": ["a", 1], "baz": null, "foo": {"bar": 3}}'

======================================================================
FAIL: test_jobconf_simulated_by_runner (test_inline.SimRunnerJobConfTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/test_inline.py", line 270, in test_jobconf_simulated_by_runner
    expected_cache_files)
AssertionError: '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/tmpdl8oxE/upload#upload,/Users/marca/dev/git-repos/mrjob/tests/mr_test_jobconf.py#mr_test_jobconf.py' != ('/Users/marca/dev/git-repos/mrjob/tests/mr_test_jobconf.py#mr_test_jobconf.py', '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/tmpdl8oxE/upload#upload')

======================================================================
FAIL: test_jobconf_simulated_by_runner (test_local.LocalMRJobRunnerJobConfTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/test_inline.py", line 270, in test_jobconf_simulated_by_runner
    expected_cache_files)
AssertionError: '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/tmpb7eYYs/upload#upload,/Users/marca/dev/git-repos/mrjob/tests/mr_test_jobconf.py#mr_test_jobconf.py' != ('/Users/marca/dev/git-repos/mrjob/tests/mr_test_jobconf.py#mr_test_jobconf.py', '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/tmpb7eYYs/upload#upload')

======================================================================
FAIL: test_jobconf_simulated_by_runner (tests.test_inline.SimRunnerJobConfTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/test_inline.py", line 270, in test_jobconf_simulated_by_runner
    expected_cache_files)
AssertionError: '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/tmp8EckDo/upload#upload,/Users/marca/dev/git-repos/mrjob/tests/mr_test_jobconf.py#mr_test_jobconf.py' != ('/Users/marca/dev/git-repos/mrjob/tests/mr_test_jobconf.py#mr_test_jobconf.py', '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/tmp8EckDo/upload#upload')

======================================================================
FAIL: test_its_not_very_quiet (tools.emr.test_terminate_idle_job_flows.JobFlowInspectionTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/tools/emr/test_terminate_idle_job_flows.py", line 616, in test_its_not_very_quiet
    self.assertEqual(stdout.getvalue(), output)
AssertionError: 'Terminated job flow j-POOLED (Pooled Job Flow); was idle for 0:50:00, 0:05:00 to end of hour\nTerminated job flow j-PENDING_BUT_IDLE (Pending But Idle Job Flow); was pending for 2:50:00, 0:05:00 to end of hour\nTerminated job flow j-DEBUG_ONLY (Debug Only Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_FAILED (Idle And Failed Job Flow); was idle for 3:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_EXPIRED (Idle And Expired Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-HADOOP_DEBUGGING (Hadoop Debugging Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-DONE_AND_IDLE (Done And Idle Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-EMPTY (Empty Job Flow); was idle for 10:00:00, 1:00:00 to end of hour\n' != 'Terminated job flow j-POOLED (Pooled Job Flow); was idle for 0:50:00, 0:05:00 to end of hour\nTerminated job flow j-PENDING_BUT_IDLE (Pending But Idle Job Flow); was pending for 2:50:00, 0:05:00 to end of hour\nTerminated job flow j-DEBUG_ONLY (Debug Only Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-DONE_AND_IDLE (Done And Idle Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_EXPIRED (Idle And Expired Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_FAILED (Idle And Failed Job Flow); was idle for 3:00:00, 1:00:00 to end of hour\nTerminated job flow j-HADOOP_DEBUGGING (Hadoop Debugging Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-EMPTY (Empty Job Flow); was idle for 10:00:00, 1:00:00 to end of hour\n'
```

I do have one remaining failure that I haven't fixed yet and I'm not sure I know how to:

```
======================================================================
FAIL: test_its_not_very_quiet (tools.emr.test_terminate_idle_job_flows.JobFlowInspectionTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marca/dev/git-repos/mrjob/tests/tools/emr/test_terminate_idle_job_flows.py", line 616, in test_its_not_very_quiet
    self.assertEqual(stdout.getvalue(), output)
AssertionError: 'Terminated job flow j-POOLED (Pooled Job Flow); was idle for 0:50:00, 0:05:00 to end of hour\nTerminated job flow j-PENDING_BUT_IDLE (Pending But Idle Job Flow); was pending for 2:50:00, 0:05:00 to end of hour\nTerminated job flow j-DEBUG_ONLY (Debug Only Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_EXPIRED (Idle And Expired Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-DONE_AND_IDLE (Done And Idle Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_FAILED (Idle And Failed Job Flow); was idle for 3:00:00, 1:00:00 to end of hour\nTerminated job flow j-HADOOP_DEBUGGING (Hadoop Debugging Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-EMPTY (Empty Job Flow); was idle for 10:00:00, 1:00:00 to end of hour\n' != 'Terminated job flow j-POOLED (Pooled Job Flow); was idle for 0:50:00, 0:05:00 to end of hour\nTerminated job flow j-PENDING_BUT_IDLE (Pending But Idle Job Flow); was pending for 2:50:00, 0:05:00 to end of hour\nTerminated job flow j-DEBUG_ONLY (Debug Only Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-DONE_AND_IDLE (Done And Idle Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_EXPIRED (Idle And Expired Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-IDLE_AND_FAILED (Idle And Failed Job Flow); was idle for 3:00:00, 1:00:00 to end of hour\nTerminated job flow j-HADOOP_DEBUGGING (Hadoop Debugging Job Flow); was idle for 2:00:00, 1:00:00 to end of hour\nTerminated job flow j-EMPTY (Empty Job Flow); was idle for 10:00:00, 1:00:00 to end of hour\n'

----------------------------------------------------------------------
Ran 866 tests in 78.518s

FAILED (failures=1)
```