Strict variable parsing

This is the first iteration of the strict C lexer and variable parser. Currently, there is a tight coupling between a few of the methods and Ruby, but this is expected to go away in the future.

Feel free to start reviewing, though this is heavily a WIP and we'll continue making changes tomorrow.

```
/Users/jli/.rbenv/versions/2.1.0/bin/ruby ./performance.rb bare benchmark lax

Running benchmark for 20 seconds (with 5 seconds warmup).

Calculating -------------------------------------
              parse:         4 i/100ms
-------------------------------------------------
              parse:       46.0 (±4.3%) i/s -        920 in  20.045934s
/Users/jli/.rbenv/versions/2.1.0/bin/ruby ./performance.rb c benchmark lax

Running benchmark for 20 seconds (with 5 seconds warmup).

Calculating -------------------------------------
              parse:         7 i/100ms
-------------------------------------------------
              parse:       78.7 (±2.5%) i/s -       1575 in  20.036520s
```

~40% less time spent in parsing, and is very reproducible.

Paired with @xthexder 

@Shopify/webscale @Shopify/liquid
Why don't you just always `parser_must_consume(p, TOKEN_IDENTIFIER)` here?  It seems like it would simplify this loop by removing the `last_type` and `must_have_id` states to consider.