再帰引数パーサ

なんかできたけど、当初の予定から大きくかけ離れたモノが。

RootParser parser;
parser << SingleString(prog, false)
   << OptionParser()
      % NumericKey("number", "n", num, false)
      % NumericKey("port", "p", port, true)
      % BooleanKey("use-tcp", "t", tcp)
      % ResolveNameKey("host", "h", host, true, true);

みたいな。実装は全然違うけど、見た目は予定通り。
boost::spritには遠く及ばない。

今のところNumericKey、しかもintだけと、BooleanKey、それからStringKeyしかないので、shortも対応したNumericKey、名前解決までしてくれるKey、Mercurialくらいに親切なコマンド引数を作る。