= routing: migrate to shapeless 2.0.0-M1

I'm not sure if we want to migrate to shapeless-2.0 right away but I wanted to see how difficult it would be. It was pretty easy and all the tests are passing.

I've also tried to come up with a new implementation for the `HListDeserializer` that doesn't require generating boilerplate. I've tried two approaches using shapeless's `Generic` and `FnToProduct` but I seem to hit a dead end on both. If you're interested I can create a gist to share it.