Add auto-resolution capability

This allows type hinted constructor params, that do not have explicit DI values, to receive new instances of their type hinted classes. It also allows explicit auto-resolution of type hints to a specific class or service. Incidentally, params type hinted to `array` will receive empty arrays when no explicit value is passed.