Add timezone option

The original way to change timezone per request works well under most circumstances. However, we sometimes need different calendar to be in different timezones without polluting default timezone environment. The introduction of timezone as an option gives us a more flexible solution to these problems.
Awesome addition! I think that this needs to accept the option but if it isn't passed, set the default to `Time.zone` so we don't get an `undefined method utc_to_local on nil` later on when we call that method on this instance variable. Right?

This line should probably be like this:
```ruby
@timezone     = opts.fetch(:timezone, Time.zone)
```

You can test this by passing in events but don't pass in a `timezone` option.