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.
Maybe `$di->typehint['ClassOrInterfaceName'] = $di->lazyGet('service_name')` would do the trick instead of `$di->resolve...`.