Remove expression cache

@pushrax & @jasonhl for review

## Problem

Pull request #391 separated `Context#[]` which parsed and rendered expressions into `Expression.parse` and  `context.evaluate` to avoid memoize expression parsing.  However, parsing was still happening during rendering, which prevents us from caching the parsed expression along with the parsed template in memcache.

## Solution

Use `Expression.parse` and `Context#evaluate` in all the tags instead of `Context#[]`, then remove the expression cache, since we each expression will only be cached once.

## Benchmark

Here is the benchmark this branch:

```
              parse:       18.3 (±10.9%) i/s -       1078 in  60.034122s
        parse & run:       11.1 (±9.0%) i/s -        659 in  60.040146s
```

Here is the benchmark on master:

```
              parse:       20.1 (±14.9%) i/s -       1185 in  59.993718s
        parse & run:       11.1 (±9.0%) i/s -        662 in  60.003203s
```

## Future Work

The strict parser has been parsing expressions then converting them back into strings to use with `Context#[]`.  This refactoring will make it easier to just parse the expression once in the strict parser.
If we implement it like the Liquid-C version, a cache becomes somewhat redundant as Expression.parse and Parser#expression are joined into a single linear pass over the tokens with no intermediate string.