Render partials lazily, to permit recursion

The TestPartialsRecursion test currently causes an infinite loop,
because partials are being parsed eagerly, even when they will never be
rendered. This defers parsing until the partial needs to be rendered.
Guard against renderSection with empty contextChain

This fixes a runtime panic in the TestInvertedContextMisses, which
attempts to render an inverted block with an empty contextChain.