Added SpyInstanceProvider

Added SpyInstanceProvider functionality. Note this is not great if the instance is Mutable, but the documentation reflects this danger.