new execsync via node-ffi with hack fallback

New implementation of execsync based on execsync-ng, which is based on node-ffi to address #66 

execsync-ng is listed as an optional dependency. This means that if node-ffi cannot be installed or (on Windows machines) msvcrt.dll cannot be loaded, the old hack approach will be used as a fallback.

exec now takes another private parameter called `_native` which defaults to true. If set to false, the hack implementation will be used. This parameter is not documented and is used only in `test/exec.js` to run the tests against both the default and the hack implementation.

edit: the latest execsync-ng also supports a silent parameter which when set to false causes it to output data to stdout as it comes (without buffering it). This means that it now works exactly the same as the hack version.