refactor #as_liquid

Building off of #3154. Like how the refactored version is longer? A little less clear, too, but more robust.

![fail](http://media.giphy.com/media/6xK0UDuMgZ9QI/giphy.gif)

@parkr Not sure if the [github-metadata](https://github.com/jekyll/github-metadata) use case [you mentioned](https://github.com/jekyll/jekyll/pull/3154#issuecomment-64763531) can be covered by this method. From [what I'm seeing](https://github.com/jekyll/github-metadata/search?utf8=%E2%9C%93&q=call), the procs require varying numbers of plugin-specific arguments, so not sure if there's anything that can be done here.