Linear-Time Algorithms for Front-Door Adjustment in Causal Graphs