An Empirical Process Approach to the Union Bound: Practical Algorithms for Combinatorial and Linear Bandits