Bring a large pot of salted water to a rolling boil and add the elbow pasta. Cook the pasta according to box instructions, until the pasta is al dente. Drain the pasta and keep it warm. While the pasta is cooking, prepare the bacon and cheese sauce. Preheat a large saute pan over medium heat. Fry the bacon slices until they're crispy and golden, then remove onto a tray lined with paper towels to absorb excess oil.
To the pan with the bacon fat, add the butter and allow it to melt over medium heat. Add the flour and whisk, cooking the roux for 1 minute. Once the roux is cooked, begin adding the milk. Add 1 cup at a time and whisk well after each addition. Continue adding the milk, whisking well until the mixture is smooth and clump free. Next, add in the chicken or veggie broth and season with salt, pepper, paprika and optional garlic powder.
Add in the cheese: cheddar, gruyere and cream cheese. Make sure the cream cheese is softened at room temperature and break it up into small pieces when adding. Turn the heat down to low/medium and cook for 7 to 9 minutes, stirring occasionally until the cheese is completely dissolved. Use a whisk to break up any cream cheese chunks.
Chop the bacon into small bits and add it to the sauce; reserve a few bits for garnishing the top. Pour the prepared cheese sauce over the cooked pasta and stir. Let the pasta stand for about 5 minutes to thicken, then serve. Garnish the top with more bacon bits and chopped parsley, if desired. This pasta dish is best enjoyed fresh. If reheating, I recommend doing so on the stove top; add extra chicken or veggie broth to reconstitute the sauce.