Programming with models: modularity and abstraction provide powerful capabilities for systems biology