Improve type checking to support user-defined objects

Added .getType() utility function which returns the type of user-defined
objects as well. Fixed a bug where instances of user-defined object would
pass .isObject() test.
Add registration for object type handlers

Now there is a way to register handlers for object types other than
literals. You can specify your own .clone() function to deep-copy
objects, and your own .each() function to allow Mangler.js to traverse
the object.