Well,
The reason behind the issue is simple enough, I was loading a service with the same name more than once... however, the resulting behavior is usual in that if you do not know how angular handles injecting objects with the same name. In my case I was loading the toaster module in my main app where I create all the modules needed for the application. Then I added the directive to the html page so that toaster could display messages, this caused to load the toaster service again, but without a provider (I assume because it was already loaded in the main application), hence the provider error.
Initially to fix it, I added a script tag to the page, and everything worked fine, but since I wanted this to be a global messaging scenario, having to add a script tag to every page bothered me, so I kept digging.
That is when I noticed that the directive was loading the service again. So it was loading in the main module, and then directive was loading it and finally on the page the script tag was overriding the previous 2 implementations. So fixing properly was a matter not loading it in the main app removing the script tag from the html page and simply adding the directive to the page.
This behavior is the result of the way angular handles injecting objects that have the same name, ultimately the last one to the party wins.
I hope this helps the next person who comes across something like this.