check for arguments length instead of isFunction in Object.keys wrapper
check
checking for presence up front saves massive amounts of time when
testing isPlainObject against undefined
1. Always check for primitives first to provide default matcher up front
2. Save the 2nd wrapper check by holding on to unwrapped method
references in enhancements.