General purpose extensible dependency injection framework for JavaScript