Make Array.sum() tolerate undefined elements

Array.sum returns `NaN` if a array item is undefined.

[10, 20, undefined, 30].sum(); // "NaN"

This PR makes:
-  `Array.sum()` ignore `undefined` values
- more explicit in the docs that the method will return NaN if a
*non-number* is present in the array
- adds extra specs

##### PS: - All this is @timwienk 's credit & work!

fixes  #1114