Fix ShapedStationRecipe, add RecipeBounds

IStationRecipe.checkMatch takes RecipeBounds, which is created once in
findMatchingStationCrafting.