In a large stock pot, heat the butter or oil and sauté the onion, garlic, and ginger until soft. Add the squash, apple, sage and stock and bring it to a boil. Reduce the heat and simmer the soup for about 30 minutes until the squash is very soft. Remove from heat and, using a stick blender or regular blender, puree the soup. Stir in the milk or cream, if using. Season with salt and pepper.