first runtimes all project type files, like `project/type.vim`, then the specific project file, like
        `project/type/name.vim`.

def _runtime(self, project, base):
        ''' first runtimes all project type files, like `project/type.vim`, then the specific project file, like
        `project/type/name.vim`.
        '''
        def run(path_suf):
            path = '{}/{}'.format(base, path_suf)
            err = 'error sourcing {}.vim: {{}}'.format(path)
            return (
                self.vim.runtime(path)
                .cata(L(err.format)(_) >> List, lambda a: List())
            )
        return (
            project.all_types.flat_map(run) +
            (project.tpe.map(_ + '/' + project.name).map(run) | List()) +
            run('all/*')
        ).map(Error)