Add instance parameter/object overloading

This commit adds the ability to set a different parameter or object to be returned from the container for a given key the next time it is resolved, similar to Laravel's App::instance() function. All subsequent requests to the container for the given key return the original parameter or object. This lets tests specify a mock dependency to be resolved into the class being tested without altering normal behavior.