When rendering a collection, attempt to use read_multi to fetch the cached items in parallel, potentially decreasing time to response.
Refactor read_multi support to be more general.

Most changes are consolidated to the engine and builder classes.
High-level, builder now defers the actual rendering (to hash) until
later on, allowing the engine a chance to evaluate all of the various
extends and so forth that may contain a cache directive. Once all of the
cache directives are found, it can generate all of the cache keys and fetch
them simultaneously using read_multi.
Engine#read_multi appropriately builds the resulting hash from the cached elements. Add configuration option to disable read_multi.
Comment Builder engine compilation loop.
Clean up some left-over logic after moving to the delayed rendering method for support read_multi.
Fix broken builder test after delayed render changes.
Only block converting object_to_engine in partials.rb if the object is nil. The engine knows how to handle objects that aren't really objects or collections.
Refactor read_multi logic into its own class.
Add tests for MultiBuilder.
Fix a missed local -> instance variable conversion when refactoring MultiBuilder.
If an attribute is a collection and responds to as_json, go ahead and call as_json on it. Otherwise, the JSON dump can have issues processing AR models and such.
Reset the engines array after turning them into a hash, otherwise the same object is used if a builder is reused to build a collection.
Don't attempt to call render on what's returned from partial_as_engine since it may be nil or an empty array.
Since Builder#node doesn't generate an engine, move it to the compile_hash method rather than compile_engines.
In MultiBuilder, handle the case when a builder does not have any engines.
When there's a cache miss on a read_multi, do not attempt to read the cache again when rendering the engine.
Fix typo in cache_read_on_render.
Merge nesquena/rabl/master into ahlatimer/rabl/master.
Update cache_engine to include write, and update multi_builder so that all specs run, even if some still fail.
Merge remote-tracking branch 'source/master' to get Rails 2 specs to run.