Gets modified_time from storage, if available. Moved  common functionality for getting thumbnail and source mod times to get_modified_time in utils.py

Also, since storages' modified_time functions return a datetime and not a timestamp, I changed the utils.py "fromtimestamp" function, which assumed a timestamp and performed the conversion and then did timezone-aware conversion, to "make_time_zone_aware" which assumes a datetime. To deal with the fallback case where a storage doesn't implement modified_time and we use os.path directly, the new utils.get_modified_time converts the timestamp to a datetime and return that for consistency.