I appreciate wanting to be able to create multiple cursor instances, makes sense from a pure data point of view. However for now, we are primarily using this module to have a known location for the cards to coordinate their data sharing, similar to model. So I would just export a module value that is just the singleton, as model does. I think it is fine for it to also not be created from a constructor function. 

The bigger refactor for model and this cursor will be to hook things into MailAPI and use a BrowserContext instance, and we can look at instance generation in that approach then. Worst case, we can have a cursor.create() that could use an Object.create() pathway to make new objects. But I would not cross that bridge until it is needed.

I also like the idea of keeping these model/data containers under the 'model/' module ID space, so perhaps move to 'model/message_cursor'. Not a deal breaker though, I can appreciate wanting to keep the ID somewhat short.