re-organized data module, now easy to diff

The "data" module has been re-organized so that each
step can be diffed to see only the relevant changes
that were required to add a particular feature.
For example, to see what was required to implement
read/write compared to just initializing a character
driver:

  $ cd data_rw/
  $ diff data.c ../data_chr/data.c