Follow up work to ARROW-554.
Unifying multiple dictionary-encoded arrays is one use case. Another is rewriting a DictionaryArray to be based on another dictionary. For example, this would be used to implement Cast from one dictionary type to another.