Changes to ephemeral model semantics

* Retrieving an ephemeral model now sets its `ttl` and `expire_at` properties. Both properties indicate the model's remaining time-to-live.
* With the above change, there is no need to explicitly preserve the original time-to-live, as the updated `ttl` property value will be used when the model is saved. This behavior also seems more predictable—if the `ttl` is updated, it won't be blatantly ignored upon save.
* Fixed a small typo in the unit tests—`expires_at` should be `expire_at`.
* Enforced a 5-second timeout for all test scripts. No more "weird error" warnings when generating the coverage report.