Hello. I have an idea on how to share same modules between extensions and don't load them multiple times. Brackets could use Bower.
var lodash = brackets.getModule('bower/lodash');
//in Development (where no such module is available in Brackets module cache)
var lodash = brackets.getModule('bower/lodash') || require('./bower_modules/lodash/lodash.min');
This way common modules can be shared between all extensions and not being loaded in the memory more than an once.
My view on this is that sharing library code between extensions is not desirable. One of npm's greatest successes is the fact that dependencies of libraries that you include in your program are isolated from one another so that you don't get into dependency hell. Libraries can always count on having compatible versions of their dependencies.
Similarly, extensions should be able to count on having compatible versions of the libraries that they use.
If multiple extensions want to use lodash, there's not much harm in them each having their own copy. They could use the one built in to Brackets, but they risk Brackets core upgrading it to an incompatible version.
"Services" would need to maintain some level of API stability, in much the same way that web-based service APIs do.