Keyword not found recommendations

For issue #888.
In my opinion showing recommendations that simply cannot match mainly creates noise. I would like the cutoff to be tuned to some level where matches are at least somewhat close. On the other hand, I would consider not limiting the number of recommendations or rising the level a little.

Another thing to consider is matching used names separately to available library/resource name and keyword name. It seems to be that using a keyword like `Built In Something` would match awfully many keywords from `BuiltIn` library. If the used name has no dots, it should be matches only against available keyword names.

Handling full names (`Library.Keyword Name`) is a bit more problematic, mainly because there is no easy way to know does a dot in the name separate keyword from owner or is it just a part of keyword name. I just fixed a related problem reported as #1771. The new `_yield_owner_and_kw_names` could be used to iterate over possible library/resource names and match them against available library/resource names before then matching keyword name against possible keyword names. This is the reason I commented above that your `_get_all_handler_names` could possibly return library/resource name and actual keyword name separately. It could be a list of tuples where `None` is used as resource name with user keywords in same file. Using full names is not too common, though, so all this may not be worth the effort.

This feature definitely needs some tuning and testing to get implementation details right. Probably the best idea is creating normal Robot tests and see how they behave. You could, for example, create gists containing outputs with different cutoff values and other tuning. Those tests could then be easily converted to real acceptance tests by creating the running side (e.g. with `atest/genrunner.py` script) and adding correct error messages to docs.