fix some bugs around providing slices []T
allow checking if a Provide is Nil
add support for variadics
check if provider is explicitly set
rename interface types and add isSet
Add explicit Optional types
Doc rewriting
Initial Version