Linear-time modular decomposition of directed graphs