Dictionary import tests and Temporary file test util

@charleso Hard to say. But as this change runs deeper (full support for every permutation) there will be at least some specific code for each platform (create repo and import dictionary are the only two metadata only things). My personal opinion is that there should be at least 1 cross platform smoke test (happy path) for each high-level operation with varying combinations of platform, and that all our detailed testing should be done in local+hdfs mode which is very different to how things are done now, but far faster and a better test (as it will have non-naive sync operations) - but this part obviously can't happen until this change has gone end-to-end.

@etorreborre What is the benefit of not support arbitrary typed locations, there are operations that are going to have at least 4 (if not more) combinations which is 81 platform permutations for a single scenario. I don't see how you are going to get reasonable coverage with any set of deterministic tests, and also IMO we should be able a case/platform without having to backfill every tests to support that value.