Using magic getters and setters to provide @property access for better code completion support in various IDEs

This is a breaking change as you now access your container's properties via $di->something instead of $di['something']