Coresets-Methods and History: A Theoreticians Design Pattern for Approximation and Streaming Algorithms