Fix hashing of jobflow arguments to account for uncertain dictionary ord...

...ering.

According to the Python docs
(http://docs.python.org/release/2.6.4/library/stdtypes.html#dict.items):

"CPython implementation detail: Keys and values are listed in an
arbitrary order which is non-random, varies across Python
implementations, and depends on the dictionary’s history of insertions
and deletions."

This causes a problem when hashing the arguments for a jobflow. Some
of the arguments -- the uploaded files and their hashes -- have been
passed to the function that generates the hash as a
dictionary. However, the order of this dictionary is not guaranteed
and can therefore return different results if the dictionary happens
to have a different order.

This fix makes sure the ordering is consistent by sorting the
dictionary items (key,value tuples) rather than relying on the
dictionary itself. The uploaded files appear to be the only dictionary
actually dependent on ordering, so sorting the values for the files
should be sufficient. The bootstrap actions also contain dictionaries,
but seem to always be constructed consistently.