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.
Actually there is one _right_ way to do it, but I didn't chose to go down that way since that would  mean more work. BTW the right way is to define all iCal fields as object with a `validate` function and a `fromIcal` and `toIcal` methods to do the binding between iCal and an internal JS object model.
Also, all ical types (date-time, date, duration, etc.) should also be distinct object that can be validated.
That would clean a lot the validation code, but also increase the code base size. That's what ical.js from Mozilla does and I find it elegant.