Add per_thread_caching plugin, for using separate caches per thread instead of shared thread-safe caches

The shared thread-safe cache may save memory, but it may not
perform as well as a per-thread cache due to the locking.
I'm not positive it performs better, that can depend on many
things, such as CPU cache sizes.  Still, it's good to have an
option for JRuby/Rubinius users if the mutex used by the default
thread-safe cache is a bottleneck.
Add private back to RequestMethods, removed by accident
Remove handle_on_result to block_result
Split of block_result_body method from block_result

This method is only called if the response is empty, and returns
the body to write.  This should make it simpler to override,
so that handling new types of block results doesn't require
checking for a empty response at every stage.
Add symbol_views plugin, allowing match blocks to return a template name symbol

This allows for DRYer routing code.  Some people may say it's too
DRY, but the good thing about it being a plugin is they don't have
to use it.
Allow default halt method to take no arguments, and use the current response

This was already possible with the halt plugin, but this makes
it available by default by making the argument optional.
Add view_subdirs plugin, for setting a subdirectory for views on a per-request basis

This should make it easier to deal with larger sites that use
nested view directories, assuming that different URL branches
use different directories.
Tweak plugin wording in README
Add json plugin, allowing match blocks to return arrays/hashes, returning JSON

This DRYs up things if your application deals heavily with JSON.
Add :format default symbol_matcher
Add :all hash matcher, allowing array matchers to include conditions where you want to match multiple conditions

This is really being extracted so it can be overridden in a plugin,
but as it seems generally useful, it might as well be a public API.
Give the terminal matcher a useful inspect string
Add backtracking_array plugin, allowing array matchers to backtrack if later matchers do not match

This was more work than I would have liked, because it requires
an API change so that the array matcher has access to the
remaining matchers.

This is not going to be the default behavior because it is
slower and rarely needed in practice.