Allow template dependencies to be specified programmatically

This lets you control the created digest programmatically, for instance
when a different template was selected even though the format and
virtual path are the same.

You, um, could say that this is "dependency injection." :syringe:

Example use:

```ruby
class MyController < ApplicationController
  view_dependency { "phone" if agent_is_phone? }
  ...
```