Yaocho APIs

This adds a few APIs that were useful for Yaocho. These need to get to prod before I can put Yaocho in the marketplace.

r?
It needs to use `**kwargs` because that way it is a well behaved CBV that deals with super classes nicely. Popping things from kwargs is because in need to change the names of them. Notice that `topic` maps to `slug` and `product` maps to `product__slug`.