Improvements to str_cat
closes #11435 
closes #11334.

Modified behavior of str_cat to ignore NaN values in the Series by default.

Added some doc examples to make the behavior with nan more clear, and catch an error condition when a sep is passed instead of an others (array) as an argument and print a more intuitive error message.

This is a retry of PR #12000.

Before, if NaN values were present in the Series, calling `cat()` on it would return NaN, unlike the rest of the `Series.str.` API. This behavior has been amended to ignore NaN values by default.
(#11435)

A new, friendlier ValueError was also added to protect against the mistake of supplying the `sep` as an arg, rather than a kwarg.
(#11334)

``` python

    >>> Series(['a','b',np.nan,'c']).str.cat(sep=' ')
    'a b c'

    >>> Series(['a','b',np.nan,'c']).str.cat(sep=' ', na_rep='?')
    'a b ? c'

    >>> Series(['a','b',np.nan,'c']).str.cat(' ')
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-3-338c379049e9> in <module>()
    ----> 1 Series(['a','b',np.nan,'c']).str.cat(' ')

    [...]

    ValueError: Did you mean to supply a `sep` keyword?
```
