The Algebra of Patterns (Extended Version)