Add profile:stackprof rake task.
Require the liquid extension when liquid is required.
Create a Liquid::Tokenizer class in the C extension.
Remove a couple FIXME comments which are only partially a lie.

I added those comments before creating an invalid token type to return the
error. However, we still aren't making use of the token type.
Make sure the ext directory is included in the distributed gem.
Avoid freeing of uninitialized memory.

Thanks to Isha for pointing this out.
Turn on C compiler warnings.
Fix a missing return warning.
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.
Return nil in Document#block_delimiter rather than an empty array.

The block delimiter is normally a string, so nil makes more sense when
there is no delimiter. We also don't want to allocate an array for no
reason.
Avoid keeping track of two lists of nodes during parsing.
Use super rather than render_all in single block render classes.
Move the parse method out of Tag, only blocks need the body parsed.

The parse method should be renamed to something like parse_body,
since that is how it is used, and no non-block tags were using the
parse method.
Rename Block#parse to parse_body since that is how it is being used.
Implement Block#parse_body in C.
Add convenience methods for getting a struct from a ruby object.

If we are trying to get the struct from something other than self, then we
should make sure to check the class of the object.  This util functions
make this easier.