Recursive M-tree method for 3-D adaptive tetrahedral mesh refinement and its application to Brillouin zone discretization