Injectallthethings™

@nottombrown What do you think of this approach? The injector module now doesn't make any external calls (i.e. to the chrome api or other objects). 

I didn't want to spend too long on speccing out everything, but I think this approach *does* make it nicer to test this module on its own.