I would recommend making it required, as I just now lost time to innocently attempting to use the method without one.

I rebased my benchmarker's branch onto `master` and had to adapt to the `ModelParser`'s new interface.  I was overjoyed to see that all the extraneous crap did I didn't care about didn't need to be tracked by my `SimpleCompiler` anymore in order to just parse a model and compile its code, since my benchmarker runs headlessly and doesn't need to worry about widgets (right?).  The `ModelReader.parseModel` takes a "parser" as an argument, which... I don't know why it's expecting me to give it one—it's the thing that's supposed to know how to read models!—but it's optional and looks at a glance like it only has to do with widgets, so it seems to me like I don't need to worry about it.

Then, after hunting after a mysterious compilation error for a while, I eventually came to the realization that I still needed to get a handle on the interface globals, which means that I _need_ to pass in a `ParserServices` (which I'm not even sure how to get ahold of or why we expect a client of the API to have one), and it means that it's never safe to use `parseModel` for any general compilation purpose with `parser` as `None`.  There are two examples in the `headless` branch of using the method without a `ParserServices`, but they're both very atypical, and neither would be substantially harmed by requiring them to have a `Workspace` handy.