chain; flatten revisited; "of"

it is not curried, so i don't think arity enters into it. `checkForMethod` just takes the last arg and checks that for `of`

``` javascript
> var t = { of: function(x) { return {typed: x}; } }
undefined
> R.of(100, t)
{ typed: 100 }
> R.of(100)
[ 100 ]
```