Без заголовка
Для первого пункта желательна система с поддержкой наследования. Что-то типа Zope (могу порекламировать WTK, которое сам когда-то писал, но не буду, потому как с Perl на OCaml еще даже не начал переписывать :-)). Показ книг разными шаблонами делается в таких системах очень легко.
Пункты 2 и 3 малоинтересны. Это по моему реализованно в том или ином виде почти во всех системах.
Четвертый пункт самый заманчивый :-). По моему такое стоит делать на нормальных языках - OCaml, Haskell и тп, а не на попсовых Perl и C++ или морально устаревшем Lisp.