Issues/50 from ical, cleaned up

Cleanup of #226.

Squashed all commits into one, removed non-ical changes, unbroke tests, and committed. Sorry to have lost all the contributors, but it was too unwieldy to rebase. Credits to @skyporter @jgauby @btucker @spra85.

I hope this helps in getting iCal parsing finally merged.
ActiveSupport::DateTime.to_time returns a DateTime unless the offset == 0 (UTC)
Instead, saying `DateTime.parse(value).utc.to_time` (".utc" has moved) will convert to UTC _then_  successfully convert to Time.