Expire cache hourly/daily exactly when the hour/day rolls over

Invalidating caches at the top of the hour/day is useful for pages that make data available at specific times. (e.g. new job postings on the hour, or items go on sale at 5am).

I added an :expires option for cache entries/stores.  The developer can set this option to :daily or :hourly.  This allows the developer to invalidate the cache exactly whenever the hour or day changes.

```ruby
# e.g.
ActiveSupport::Cache::MemoryStore.new(expires: :hourly)
# or
cache.write(key, value, expires: :daily)
```
Thanks for looking over my code @robin850.  Originally I had written the line : 

    @expires = options[:expires] if EXPIRES_OPTIONS.include?(options[:expires])

But that produced the warning when running the full test suite. :(  Hence why I ended up explicitly setting it to nil if the appropriate option value wasn't passed.