Simplify View blocks.

This set of changes breaks the existing behavior of blocks in a few
ways, but leaves us with a simpler and easier to reason about API. It
also solves weird behavior with prepend() where it wouldn't prepend at
all.

* startIfEmpty() is removed, as that behavior is not relevant when
  blocks always overwrite.
* append() and prepend() no longer have capturing modes. They can only
  be used to append/prepend content into blocks. The capturing mode of
  prepend never worked so I dobut anyone will miss this.
* Additional tests were added for the new behavior.

Refs #3561