Kernelization: New Upper and Lower Bound Techniques