Removed greedy template definition of NanNew(...)

In #208 I proposed to remove the generic version of `template<typename T, typename P> v8::Local<T> NanNew(P arg1)` because it is error-prone.

This PR removes the function definition leaving only a declaration. It also adds the specializations required by the test suite.

Not sure I got everything right and to your liking, but I think it is enough to outline what needs doing.

HTH
I think the static_cast can be avoided if you make the overload for v8::External a pointer-to-T template function:

```
template <typename T>
NAN_INLINE v8::Local<v8::External> NanNew<v8::External>(T* value) { /* ... */ }
```