fixed blinktree to handle non-existing node's without BUG()'ing out. fixed io.h definition of node_remove and wrote tests which ended up passing
Tests work (that is, single writes with and without an offset complete (we don't verify their output as there's no way of doing so without using the read_node call)

3 primary fixes required were:
  1) changes to fragment_end_io, it incremented bio_completed of the request twice for each bio hitting the function, which was wrong
  2) kmem_cache_alloc calls changed to kmem_cache_zalloc which zeroes the allocated memory, otherwise certain fields which weren't explicitly initialised (such as bio_completed) had undefined starting values
  3) ensured that each cfsio request fragment structure allocated as part of __alloc_bio has its bio field set to point to its companion bio - without this fix, cleanup in fragment_end_io would fail.
temporary interface code wrongfully allocated 1024 bytes (1kb) instead of 1mb as wanted

changed blinktree.{c,h} to allow the data block allocation function to take a size parameter large enough to hold 1024^2 (1mb)
littered debug statements - set off&len fields of treecmd (I neglected to do so earlier) -- FIXME: treating reads as writes atm :/. Fixed bio_add_page argument order mixup (offset&len got switched)
aoecmd:
	- manually incorporated a suggested fix for a problem relating to page counters and compound pages (I don't understand it, presently)
		code stopped the outright crash but if it's due to another error or mine or a genuinely erroneous situation I don't know, but data was copied over in a very strange order (with loops)
	- ensured each TREE request fragment generated has its len & offset fields set regardless of whether it's a WRITE or READ command (before, only WRITE commands did so, and so only WRITE commands worked)
		(that is to say, a AOECMD_READNODE would work, masquerading as a WRITE command)

io:
	- finally fixed ability to specify up front how many buffer vectors to preallocate - changed cfsio_data_request to preallocate as many as it would need (based on its pages_left value, which specifies how many pages the
operation has left to transfer) -- clamped, of course, such that we don't try to preallocate more pages than needed to hold the maximum allowed number of sectors in a bio.

testio:
	- stopped trying to use statically allocated memory for IO transfers (won't work - non-valid PAGE address returned) and now using dynamically allocated memory
	- wrote new test case which first writes 12kb, then reads it back - it works now

ISSUES:
	- cannot recover from a failed bio_add_page call, so BUG()'ed out.
	- not 100% sure about the BIO_MAX_PAGES_PER_CHUNK calculation, still.
added a test to exercise various lengths and offsets to ensure no particular length or alignment is the reason for it all working
writing on super code
wrapped read_node and update_node to create synchronous variants. Expanded arguments for callback such that a user-supplied void* pointer is taken in all cfsio_data_request variants and that this pointer is supplied the cfsio_on_endio_t callback
small change to ensure nodes, like trees start at id value 1 (in this way, 0 is a reserved value, used for error-checking etc - tree.h reflects this via TREE_MIN_NID)
end of daytime work, I'm sorry for committing this
Creates an FS and mounts it!

- Does (supposedly) use sysfs interface to initialise a file system

- sysfs interface, currently only add works -- accepts only the backing device as argument, makes a set of trees and nodes for a new, empty file system
- mkfs, code for initialising a new file system
- io -- fixed a bug in previously untested cfsio_node_update_sync where failure to properly initialise a completion resulted in strange errors
        (note init_completion()=> inits a completion, INIT_COMPLETION() => RE-initializes a completion)
- super -- more work on fill_super, put_super etc for proper initialization and shutdown of a filesystem
- testio -- minor changes required from API changes elsewhere