Revert "Auto upcast of pointer parameters to C++ routines."

This reverts commit 64cc5c47bed294d5efa2433655552530c0242503.
Revert "Revert "Auto upcast of pointer parameters to C++ routines.""

This reverts commit 07e0daa5aab716b38acf9041a8baec3816976579.
Revert "Revert "Fix a lint error.""

This reverts commit 6bcd2b18c56448502c69bbfc960a3044c8955fd8.
New CastError exception when explicit or implicit cast cannot be completed.
Minor clean-up of auto upcasting.
o Temporary shared pointers created to hold upcast argument values now share ownership with the original pointer.
o New test cases for edge cases.
o Other minor clean-up.
bring emscripten::val closer to the set of primitive operations provided by JS on values
Forgot to implement take_value :)
It is now possible to access base class properties and methods from a derived class (multiple inheritance not yet supported).
Fix for lint warning.
Work in progress for access to properties under multiple inheritance
Fix lint warnings.
Reconstruct code after git merge issue.
Simplify emscripten::val a bit, reducing it closer to its primitive operations.
Simplify emscripten::val a bit, reducing it closer to its primitive operations.
Removed order dependencies from emscripten bindings.
Fix a lint error.
simplify emscripten::val set and get
Switch from val::get to val[]
after merge we need to fix hasOwnProperty to use []