Put the wing tips, giblets, neck (halved if from a larger bird), garlic cloves and stock in the smallest pan that will hold ingredients comfortably. Cover and bring to a boil. Reduce heat to a simmer and skim.
Cook, uncovered, for 1 hour for chicken or up to 2 hours for gravy, until giblets are easily pierced with the point of a knife. Add 1 cup water each time the liquid is reduced by half. Do not start with more liquid or stock, or the gravy will not be a rich, dark color. Skim occasionally. Remove the giblets, allowing them to cool.
Meanwhile, continue to cook the stock 1 hour longer for chicken and up to 2 hours longer for turkey, until the neck bones fall apart. Add water as needed. For the last 20 minutes, let cook without adding any more water. Meanwhile, cut the heart and gizzards into thin slices or small cubes and reserve. Strain the stock. Skim off remaining fat. Just before serving, add giblets and, if you wish, some fresh herbs or celery seeds. Pick meat from neck and add. Heat until warm throughout. Add deglazing liquid from the roasted bird, if available. Season to taste with salt and pepper.
Optional: For even thicker gravy, melt the butter and stir in flour. Use a tablespoon of each for every cup of strained stock. Cook, stirring, for 4 minutes. Add giblets and seasonings. Heat until warm throughout.