Add MaxGenerator to Faker.

MaxGenerator will allow the use of `$faker->max($num)->something` to
only return a maximum of $num different results.

I'm not sure if this functionality exists already, as I've only minimally messed with Faker for doing a bit of fuzz testing, and haven't really had time to fully explore the codebase. The problem I ran into was that while generating random data, I also wanted to ensure that collisions existed within the dataset I was generating. The solution was to add `MaxGenerator` and expose a `max()` method on `\Faker\Provider\Base` which would allow me to limit the data I would receive.
So, it looks confusing in concept, but it is actually very simple. Before entering the generator itself, if `true` is specified as the second argument to `max()`, then it will set the respective property in the generator. After entering the generator, the generator will check that property, and remove the entry before generating new data to place into it, resulting in a different set of data for that entry. What's the use case? Hell if I know. I added it in there because it was considerably simple.