I threw up a design for the Stan 3 model concept on a Wiki:
Feel free to edit the wiki or comment here. The big issue at the moment is figuring out how to provide a useful abstract base class without too much duplication. The obstacle is that templated methods may not be declared virtual.