Added exception types that wrap all core Javascript errors and specific handling for each error.  Made exceptions closer mimic the name structure for Javascript errors.  Added a toString method.  Added more tests