Make the apply_inflections method case-sensitive

Hello,

Since d3071db1, the apply_inflections method check if the downcased version of a string is contained inside the "whitelist" of uncountable words. However, if the word is composed of capital letters, it won't be
matched in the list while it should.

We can't simply revert to the previous behavior as there is a performance concern (benchmarked over `/usr/share/dict/words`):

|                 |    user    |   system  |    total   |  real        |
|-----------------|------------|-----------|------------|--------------|
| Before d3071db1 | 135.610000 |  0.290000 | 135.900000 | (137.807081) |
| Since d3071db1  | 22.170000  |  0.020000 | 22.190000  | ( 22.530005) |
| With the patch  | 25.130000  |  0.070000 | 25.200000  | ( 25.611538) |

Benchmarked with http://git.io/aFnWig.

Have a nice day.
As for `#map!`, I'm not really sure. People may pass an array built from a file or the database so it'd be altered but I don't know if this is that common. What do you think ?

As for the two flatten calls, I agree that they don't fit here. Actually this was here because we can pass arrays to the `uncoutable` method (e.g. [here](https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflections.rb#L68)) but the `words` parameter is still an array so we ended up in having an array of arrays. Another implementation could be:

~~~ruby
@uncountables += words.flatten.map(&:downcase)
~~~

Which is also [a bit faster](https://gist.github.com/robin850/702295b9c9f56ae08566).