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
Correct if-statement nodelist.
The nodelist returned by all tags is a list of containing nodes, except for the if tag.  This correct that inconsistency
Update against failed cherry-pick
Add a test for corrected if-nodelist
Merge pull request #3 from dntj/master

Add a test for corrected if-nodelist
Remove to_sym from condition creation

This prevents a DoS http://www.tricksonrails.com/2010/06/avoid-memory-leaks-in-ruby-rails-code-and-protect-against-denial-of-service/
Use public_send on condition creation

This makes sure you can't call Kernel methods like `throw`
Add history message
Merge pull request #273 from Shopify/make-if-less-dangerous

Make if less dangerous
security: Prevent arbitrary method invocation on conditions in if tag.
Merge pull request #274 from Shopify/restrict-send-on-conditions

security: Prevent arbitrary method invocation on conditions in if tag.
Remove some legacy Ruby 1.8 compatibility code
Merge pull request #276 from Shopify/remove_some_1.8_code

Remove some legacy Ruby 1.8 compatibility code
Update README.md

Show travis badge from master only.
Update history
allow drops to optimize loading a slice of elements
add another test showing equivalent functionality
move slice_collection optimization to utils
Update history log

Conflicts:
	History.md