inline partialmatches

@JeffBezanson Do you know where this going wrong? `if !(aeitype <: methitype)` appears to be failing, even though I haven't removed the precondition test of `if !(atypes <: meth[1])`

inspired by https://github.com/JuliaLang/julia/commit/024bbce1a6aa4b0ed68f01fa152c008c8f84d10a#commitcomment-6137158

Is the following behavior correct? I think it must be true, but is also causing type-inference issues with this patch on the indicated line
```
julia> methods(convert,(Type{(Char,Char)},(Char,Char)))
1-element Array{Any,1}:
 convert(T::(Any,Any...),x::(Any,Any...)) at base.jl:21

julia> methods(convert,((Char,Char),(Char,Char)))
1-element Array{Any,1}:
 convert(T::(Any,Any...),x::(Any,Any...)) at base.jl:21
```