Metastore client properly checks existence of complex partitions

Metastore client was given a partition definition in dictionary, which was later converted to "partition string". This conversion was done just by iterating over elements in a dictionary and, as there's no particular order on elements when doing such iteration, resulting "string" was quite random. Later on, the compared this string to the values returned by hive As a result, it sometimes happened, that it was comparing string like "p1=a/p2=b" to the string "p2=b/p1=a" and thus failed to recognize that such partition exists.
In fact, hive doesn't care about ordering of partitions - "p1=a/p2=b" and "p2=b/p1=a" are perceived as the same thing. Metastore client should follow the same logic and treat them as equal, which is exactly what is provided by this patch.
Related to this fix, it seems like there might be some value in also updating the implementation of partition_spec to be stable, e.g.:

```python
    def partition_spec(self, partition):
        """ Turns a dict into the a Hive partition specification string """
        return ','.join(["{0}='{1}'".format(k, v) for (k, v) in
                         sorted(partition.items(), key=operator.itemgetter(0))])])
```

Does that make sense?