rename R.size and handle null/undefined argument

I suggest we remove this function: `R.prop('length')` is short and wonderfully explicit.

If we decide to keep this function it should be named `R.length` rather than `R.size`. I'd expect `R.size({})` to return 1 rather than undefined. `R.length` is clearer. `R.prop('length')` is best of all. ;)

For consistency with `R.isEmpty` we should handle a null/undefined argument.

I would rather document it as `[a] -> Number`.  I think we should document for the planned usage of the API and not the implementation fallout.

I said this back in #96, but perhaps it bears repeating:

> In some very important sense, Ramda's fundamental data type is a _list_.  The only comfortable way to work with lists in Javascript is through arrays.<sup>1</sup> 

For the same reason, I'm in favor of keeping `size` or `length` as a separate function.  Although, as you point out, its implementation can be seen as syntactic sugar on `prop('length')`, its semantics are not the same.  It is _not_ meant to represent the value of the "length" property of the object supplied.  It's meant to represent the number of elements in the list supplied.  I suppose `length` is a slightly more precise name for lists than `size`, but either would do. 

<sup>1</sup> But for a very fun alternative see [@buzzdecafe's cons, car, cdr gist](https://gist.github.com/buzzdecafe/5272249), which builds up LISP-style lists from pure functions.