fixes #2 (support for underscore.js)
remove unneeded dependency
use a custom plainObject check troughout all the code for consistency