Enumerable#compact now removes undefined values

`Enumerable#compact` removes only null values, leaving undefined values in the array.
It may be unexpected for someone (like it was for me), could lead to hard-to-debug bugs and generally reduces usefulness of this method.

I'm not sure what's the reason for this behavior, but if there is none, I hope nobody is relying on this and it could be changed without breaking anything.