Emit suggested generator names when not found

When someone types in a generator command it currently outputs all generators. Instead we can attempt to find a subtle mis-spelling by running all generator names through a `levenshtein_distance` algorithm provided by rubygems (`Gem::Text`). 

So now a failure looks like this:

```ruby
$ rails generate migratioooons
Could not find generator 'migratioooons'. Maybe you meant 'migration' or 'integration_test' or 'generator'
Run `rails generate --help` for more options.
```

If the suggestions are bad we leave the user with the hint to run `rails generate --help` to see all commands.
Active support is only for reusable piece of code in the framework. This
code is only used here and we don't plan to reuse neither to make it
available for users. That said, thank you for your suggestion but there is
no need for a pull request.

On Tue, Dec 30, 2014, 19:23 Benjamin Fleischer <notifications@github.com>
wrote:

> In railties/lib/rails/generators.rb
> <https://github.com/rails/rails/pull/15497#discussion-diff-22365394>:
>
> >      end
> >
> >      protected
> >
> > +      # This code is based directly on the Text gem implementation
> > +      # Returns a value representing the "cost" of transforming str1 into str2
> > +      def self.levenshtein_distance str1, str2
>
> Is that what ActiveSupport is for? Anything not part of the app, models,
> views, controllers? I'd make a PR.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/rails/rails/pull/15497/files#r22365394>.
>