Function methods should throw an error given non-function arguments

Per #1576. Also specced how `_.memoize` handles undefined as discussed in https://github.com/megawac/underscore/commit/6678ff828f2c4df2944ea8686d7b7148eab09f0b