fix segfault in GlobalPropertyGetter() (closes #89)

GlobalPropertyGetter() is a static function. It can be invoked on
a context which has already been disposed off.

It turned out that there were two possible segfault reasons.

The most obviuos one was NULL pointer dereferencing.

However, there is no way to check whether the context is alive by
examining content of it or its sandbox. Both could look valid, but cause
segfaults in node. As a woraround, we add a self-reference which we clear
on destruction. A valid self-reference is a solid indication of a
valid context now.
From https://github.com/joyent/node/blob/v0.10/deps/v8/include/v8.h#L152:
> All objects returned from v8 have to be tracked by the garbage
> collector so that it knows that the objects are still alive.  Also,
> because the garbage collector may move objects, it is unsafe to
> point directly to an object.  Instead, all objects are stored in
> handles which are known by the garbage collector and updated
> whenever an object moves.  Handles should always be passed by value
> (except in cases like out-parameters) and they should never be
> allocated on the heap.
>
> There are two types of handles: local and persistent handles.
> Local handles are light-weight and transient and typically used in
> local operations.  They are managed by HandleScopes.  Persistent
> handles can be used when storing objects across several independent
> operations and have to be explicitly deallocated when they're no
> longer used.
>
> It is safe to extract the object stored in the handle by
> dereferencing the handle (for instance, to extract the Object* from
> a Handle<Object>); the value will still be governed by a handle
> behind the scenes and the same rules apply to these values as to
> their handles.

This made me think raw pointers are a bad idea.