Extend the ability to pass references to providers

- Allow non-nested references anywhere within a provider call
- Allow as many of them as you want (as long as they aren't nested)
- Add documentation
- Add test