Added defineProperty() function, with fallback to using direct assignment.
Added extend() function to Event module.
Uses extend() function from Event module to prepare Event objects.