It seems limiting that when a CommandNotFound is determined by Shell this ultimately will fail to match with any ResultHandlers and we'll just error out.
I think it would be really helpful if users could define their own CommandNotFoundResultHandler to match on these misses and allow for some default action. I think we have all the machinery to do this now, but
private final List<String> words;
has no getter.. so I am thinking we just expose this?