nodePackages: add support for recursive dependencies

This is a drop-in replacement that handles nodejs recursive dependencies by
propagating already visited nodejs packages and creating shims for recursive
ones. This implementation handles both, new and old npm2nix output format.

I tried to make it work without changing format(i had to change list of dependencies to attribute set of dependencies), but turns out that i was not able because of stack overflows.

Thanks to @svanderburg for providing his implementation, it would be a lot
harder without it.

Here is pull request for npm2nix format change: https://github.com/NixOS/npm2nix/pull/10