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
This isn't the common case, so it might benefit from lazily allocating the hash on the first keyword argument since we don't need to return it if it is empty.