Better handling of custom block type templates

Let's implement a library to hold custom templates of block types.
This optimizes the custom template management functions, and allows translating their displayed name.

Replaces https://github.com/concrete5/concrete5/pull/1601