Integration test case part 2

This is the second part of #4371. It adds the remaining asserts I originally outlined. I think this is enough for 'now'. I'd like to get the documentation done and get some feedback from the community before adding much more to `IntegrationTestCase`.
Ok, the only thing I worry about with capturing the flash message is that it and assertSession() will give different answers as `assertFlash('error', 'Oops')` and `assertSession('Oops', 'Flash.flash.error')` will be using different data. Perhaps its best if we remove this method for now.