Add #compact method

Solves #17.

Note that this filters out the usual `undefined` and `null`, but also `false` and `0`.

Is this genuinely the expected behaviour though?

In the Ruby world, `#compact` would only filter out "non-values" (`nil`) but retain values like `false` or `0`, e.g.:

```
$ irb
> [1, 2, nil, 0, 3, true, false].compact
 => [1, 2, 0, 3, true, false]
```