openssd: implement move of valid pages during gc

We implement a simple move page routing, that reads and writes a page.

There is still problems:
 * No block lefts. During high usage, we might come to a point, where user
   requests have exhausted all available pages, of which the GC write will fail.

 * The bio copy is inefficient. I have to figure out how to use the same bio for
   both read and write. Thus saving the copy. Additionally, this should be
   pushed toward the device.

 * GC doesn't scale appropriately, its fall-back timings are too low. GC should
   accelerate with low number of available pages. Finding a possible equilibrium
   will be a useful feature.

* and others...