RFC: Type promotion for keys and values for Dict merge

@wlbksy was puzzled by the current behaviour in #8877.  This PR does not affect `merge!`, but makes `merge` promote the key and value types if necessary for the returned dictionary.  Tests included.

Until I find a better way than what you see below to access the type parameters, this PR is to be considered work in progress.  I do feel slightly ashamed that my Julia/Google-fu has failed me when looking for a better solution.

    ktype{K,_}(d::Associative{K,_}) = K
    vtype{_,V}(d::Associative{_,V}) = V
[Kjempe gøy!](https://translate.google.no/#auto/en/kjempe%20g%C3%B8y)
[Google translate](https://translate.google.no/#auto/en/%E3%83%95%E3%83%BC%0A%E3%83%90%E3%83%BC%0A%0A%E3%81%8B%E3%82%8F%E3%81%84%E3%81%84!) is great when you see Japanese jokes