Enum.sample/1, 2 should raise if the collection size is smaller than the sample size

This fixes the Enum.sample/1 issue discussed in the issue #2916.

And addresses @lexmag's comment in the closed PR #2917.
Then do we just want to return `[]` instead of `nil` for Enum.sample([])?

Probably not a good idea to inconsistency of `sample([], 1) == []` and `sample([], 10000) == []`, while `sample([]) == nil`?