Don't serve up assets without digests in development

If config.assets.digest = true and
config.assets.raise_runtime_errors = true, only serve an asset if
the request has a digest.

Here are the different cases:
- If the asset request has a digest and it matches the asset's digest, we
serve the asset.
- If the asset request has a digest and it does not match the asset's
  digest, we redirect to the asset.
- If the asset request does not have a digest, we raise a NoDigestError.

Fixes #117