Template cascading in Xslate

Xslateにテンプレートの重ね掛け(template cascading)を実装した。
この機能は、DjangoやText::MicroTemplateのテンプレート継承に似ている。
使い方だが、まず基本となるテンプレートを用意し、block $name -> { ... }でブロックを定義する。
base.tx:

<section>
: block hello -> {
    Hello, world!
: }
</section>

そしてそれに重ね合わせるテンプレートでは、定義したブロックに対してブロック修飾子(block modifiers)を使って拡張することができる。このとき、重ね合わせるテンプレートではブロック修飾子以外の要素は無視される。なお、ブロック修飾子は今のところbefore/around/afterがある。
cascade.tx:

: before hello -> {
    BEFORE
: }

: around hello -> {
    --------
    : super # originalを呼ぶ
    --------
: }

: after hello -> {
    AFTER
: }

これをレンダリングすると以下のようになる。

<section>
    BEFORE
    --------
    Hello, world!
    --------
    AFTER
</section>

正確なドキュメントはあとで書く。