perl framework for testable, extensible command line apps