Wrap block into another component for dragging support

The ReactorBlock component wraps around the actual block component
to handle drag operations. It also provides a `toData/0` for the
Editor component to retrieve.

Therefore we can move ReactorControls component to be directly
rendered by the Editor, and remove the need of passing the `idx`
to ReactorControls component's props.

Regarding drag, each ReactorBlock component contains a dropzone
that other ReactorBlock component can be dragged onto. No drop
handler yet.