Check if the object is Enumerable instead of `each`

Biggest example here is a `Struct` which does include `each` method,
but the semantics are completely different.

Just because a class has a method called `each` it doesn't mean that the
class is some kind of list/array container. Every object which wants to
behave like a list should include `Enumerable` since it provides a lot
of functionality, like `map`.

This is also a fix for #5.