reuse existing V8 object by ptr address

When C++ is calling a wrapped method, the first
parameter passed is $this, however, a new V8 object
is created for the same native pointer that is already
existing. This causes all properties assigned in javascript
to be lost while inside the overriden method and also
increases memory usage and decreases performance while
creating the new instanance.

This patch tracks allocated javascript objects by the native
object address and passes the already constructed JS object
if its native pointer is being passed in the method arguments.
update js example

 * add more interactive functionality
 * fix segfaults, when V8 frees objects that are still used
move export hiding and stripping cxx options to release mode only
pass all arguments to gdb

this allows invoking it as e.g.
 <tool> -ex 'break <location>' -ex 'run <arguments>'
small refactoring of the js example
fix memory leak when converting native->v8 objects
Merge branch 'master' into feature/reuse_v8_objects_by_addr