Improved validation and testing

I added more validation steps and many tests.

It does not support everything in RFC 5545 but that's not the point, it support just enough to get events working well with reminders.
arguments.callee actually refer to the function that called the current function.

It is apparently necessary when extending error so we can have stack trace like : 

InvalidValueError
at: validate /xx/yy/zz/index.coffee:211

instead of 

InvalidValueError
at InvalidValueError errors.coffee:25
at validate /xx/yy/zz/index.coffee:211