use NAN for Node 0.8->0.11+ compatibility

This PR uses [NAN](https://github.com/rvagg/nan) to enable Node 0.8 to 0.11 compatibility and onwards. Since the V8 API has undergone **major** changes since approximately Node 0.11.3 it's become almost impossible to maintain compatibility within a single Node add-on without a huge mess of macro branching. NAN's purpose is to handle this and provide a single interface to develop against. NAN is kept up to date with each new Node unstable release. Very occasionally the NAN interface has to change slightly to maintain the compatibility bridge but it's always just a single interface to develop against.

NAN is distributed via npm so can just be a dependency.