3.0 - 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