Bundle map/reduce

Hey @aroben.

I wanted to make sure it'd be :cake: add processors that generated metadata on every asset and then aggregated it during the bundle process.

The process should be

1. Define a pre/post processor to generate metadata per file. Thats pretty simple now we have processor metadata.
2. Define a bundle processor to aggregate many asset metadata pieces into a single value. This part is less clear right now. We have an exposed "required_asset_hashes" set of assets, but its considered internal and deprecated. So I think that needs to be formalized somehow.
I think I'd like to figure out a way to expose "bundle reduce" steps as an API. We'll need this for source maps to.

``` ruby
h[:map] ||= SourceMap.new
h[:map] += asset.map
```

Maybe something like

``` ruby
env.register_something_bundle_reduce 'text/css', :map, proc { SourceMap.new }, proc { |map, asset| map + asset.map }

env.register_something_bundle_reduce 'text/css', :data, proc { "" }, proc { |data, asset| data + asset.to_s }
env.register_something_bundle_reduce 'application/javascript', :data, proc { "" }, proc { |data, asset| data + add_semicolons(asset.to_s) }

env.register_something_bundle_reduce 'text/css', :selector_count, proc { 0 }, proc { |n, asset| n + asset.selector_count }
```