Fix up rustbook test

Two commits, the first introduces a CommandResult type which is returned from `execute()`. The second changes the logic in `rustbook test` to actually fail with a nonzero code if a test fails.