I edited the text little bit, reorganized the structure somewhat and extended some parts. I've also simplified the tests a bit, using some of the BTest tweaks commited in parallel.