Index templates: made template filtering generic and extensible

Added the ability to register index template filters that are being applied when a new index is created, in order to decide whether a matching index template should be applied or not. The default filter that checks whether the template pattern matches the index name always runs first, additional filters can also be registered so that templates can be filtered out based on custom logic.

Took the chance to add the handy `source(Object... source)` method to `PutIndexTemplateRequest` and corresponding builder.
`hasSize()` matcher