Added separate block type for replacing blocks

`block` now always creates a block, and `replace` now always replaces
a block. This allows for replacements within the same template
as well as more consistent checking for duplicate names, and just more
consistency in general.

This approach can also be extended to append and prepend content
to blocks.