Supporting returning std::unique_ptr from C++ to javascript.
Exposing std::shared_ptr<T> to javascript.
Some simplifications and optimizations to smart pointer support
Fixing some tabs and removing some duplication in smart ptr embind.
Handle shared_ptr correctly.(keep underlying pointer point to the same address)

There was some global variable dependency. These bleed thru tests and affected test result. Adding a way to reset this state.
removed duplicate code / unnecessary code
Some minor generated code size reductions.
Fix several ownership/lifetime bugs in argument wire types
Add the ability to extend the prototype of native classes from JavaScript.
Add validation that prevents registering the same type multiple times (either by name or type ID)
There can be an empty shared ptr. It is totally valid.
Checkpoint work towards exposing call policies for raw pointers.
Class static methods were downright broken.
Kill some duplication
jshint
Add support for raw pointers to embind
Allow multiple pointer arguments and allow multiple functions taking the same raw pointer type
to get string from emval
std::string's WireType::destroy should be free(), not delete.
Returning an empty shared_ptr returns null to JavaScript.  Similarly, passing null into a shared_ptr creates an empty shared_ptr.