Parse expressions in Liquid::Variable#parse.
Remove unused Block#end_tag method.

Although the method is called, it is defined with an empty body and not
overridden to do anything else.
Merge pull request #446 from Shopify/remove-end-tag

Remove unused Block#end_tag method.
Use pop over shift to avoid reverse
Merge pull request #459 from Shopify/pop_vs_shift

Use pop over shift to avoid reverse
flat_map
Merge pull request #462 from Shopify/flat_map

nodelist flat_map over map.flatten
Merge pull request #443 from Shopify/completely-parse-variables

Parse expressions in Liquid::Variable#parse.
Separate ? and - into special tokens
Don't allow - to end a variable name
Merge pull request #463 from Shopify/stricter-identifiers

Separate ? and - into special tokens
Avoid parallel assignments
Merge pull request #465 from Shopify/avoid_multi_assigns

Avoid parallel assignments
Use Expression.parse and Context#evaluate in the Condition class.
Use Expression.parse and Context#evaluate in the Cycle class.
Use Expression.parse and Context#evaluate in the For class.
Refactor Condition so that it takes a parsed expression.
Use Expression.parse and Context#evaluate in the TableRow class.
Use Expression.parse and Context#evaluate in the Include class.
Remove parsed expression cache.