test: make test runner run persistent handle tests

* Add a target to test/cpp/binding.gyp so the persistent.node native
  add-on gets built.

* Rename test/js/persistent.js to test/js/persistent-test.js to make
  it get picked up by `npm test`.
nan: don't reinterpret_cast Persistents

When creating a Local<T> from a Persistent<T>, don't assume that it is
safe to take the address of the Persistent<T> and reinterpret_cast it
to Local<T> when Persistent<T>::IsWeak() == false.  That logic works
*most* of the time but it breaks down badly when the storage cell is
freed and/or cleared.  Contrived example:

    Persistent<Function> persistent_handle;
    NanAssignPersistent(Function, persistent_handle, /* ... */);
    Local<Function> fun = NanPersistentToLocal(persistent_handle);
    NanDispose(persistent_handle);
    fun->Call(v8::Context::GetCurrent()->Global(), 0, NULL);  // BAM!

Add a regression test to that effect.  Most visible in debug builds,
it produces the following error message:

    #
    # Fatal error in ../deps/v8/src/handles-inl.h, line 69
    # CHECK(location_ != __null && !(*location_)->IsFailure()) failed
    #
test: fix out-of-scope handle in settergetter test

It's not legal to return a v8::Value from a function that has a
v8::HandleScope without wrapping it with v8::HandleScope::Close() first.

Without a call to v8::HandleScope::Close(), the handle gets zapped when
the scope object is destroyed.  That is, in debug builds; in release
builds the behavior is undefined and random.

Take the easy way out by dropping the scope object; the caller already
has one set up.
test: fix bad Local<T>::As<U>() casts

Don't cast to v8::Object when the value is expected to be a v8::String.
It works in release builds but triggers an assertion in debug builds.
The workaround is simple: just don't cast.
nan: don't call String::AsciiValue with non-ascii

Creating v8::String::AsciiValue objects from v8::String handles that
contain non-ASCII input triggers asserts in debug builds so don't do
that.

Use v8::String::Value instead, it flattens the string to a two-byte
encoding.  It may consume a bit more memory than v8::String::Utf8Value
but it works predictably when the input contains characters > 127
because the string length is never ambiguous: the length in characters
is the length in bytes.

While here, rewrite NanRawString() so it only creates the flattened
string object when it's really necessary, for BASE64 and HEX encodings.
Should speed up the common case significantly, especially for large
strings.
test: fix buffer overrun in settergetter test

NanFromV8String() doesn't zero terminate the result, use NanCString()
instead.  The test worked okay by accident in release builds but not
in debug builds.
Merge pull request #60 from bnoordhuis/fix-unsafe-persistent-unwrapping

Fix unsafe persistent unwrapping
Merge pull request #61 from bnoordhuis/test-fixes

Debug build fixes
added 0.10.24, 0.11.10
update contributors, prep for 0.7.1 release
@0.7.1 safety, debug compat, speed
extract _NAN_*_RETURN_TYPE, pull up NAN_*()
deprecate NanDispose, add NanDisposePersistent
0.8 release prep
@0.8.0 deprecate NanDispose, more _NAN*METHOD macros