extract logic common to R.lPartial and R.rPartial

We should determine the performance cost before merging this change. I imagine it'll be fairly small.

not quite i think, because `concat` is expecting `(List, List)` whereas append is `(Atom, List)` IOW

```javascript
flip(concat)([1,2,3], [4,5,6]) => [4,5,6,1,2,3]
append([1,2,3], [4,5,6]) => [4,5,6, [1,2,3]]
```