Implement Array#count instead of falling back to Enumerable#count

This avoids iteration with `#each` if no arguments are given to `#count`.

This is an easy win for performance for large arrays, and MRI and JRuby already have this optimization.

In addition to performance, the implementing Module as given by introspection now matches MRI, meaning behavior will be consistent if some silly user deems to monkey-patch `Enumerable#count`.

```ruby
Array.instance_method(:count).owner #=> Array (not Enumerable)
``` 
Is there a specific reason for writing this backwards, instead of using `if item != undefined` or `if !item.equal?(undefined)`?