Use Time.zone when available

- Check for `Time#zone` and use it when appropriate
- Move coercion logic to `#to_date`
- Test coverage for zone support