Add a class cache to avoid runtime extend calls

 * Strainer has a class cache that creates Strainer subclasses for each filter
   set that is used on .create calls.
 * Context now creates a list of filters and passes this to Strainer.create to
   utilize the class cache in almost all use cases.
 * If add_filter was called after a render, then the method cache may still be
   invalidated.

Conflicts:

	lib/liquid/strainer.rb
Strainer test now works on 1.8
Update against failed cherry-pick
Merge branch 'class_cache' of github.com:wildfireapp/liquid into wildfireapp-class_cache
Add raggi's change to History, remove Ruby 1.8 code from test