Keyword not found recommendations

For issue #888.
The reason for this algorithm change was to improve recommendations in cases like `NoSuchLib.No Operation` or `Key.word.with.spaces`. Note the use of `_yield_owner_and_kw_names` to iterate over different possible handler names. I arrived at this after experimentation with a few different approaches. However, these are probably not common use cases, so I'm happy to go back to the algorithm we discussed originally.