Split off bootstrap into separate project

Added environment to shim()

Fixed singletons to provision on first injection, not definition