Input filter annotation fix

This PR fixes an issue with the InputFilter form annotation, when applied to a form it causes the annotation builder to totally ignore any element level validation. 

This fix allows the annotation to take an array option, if it is specified as an array, element level validation is merged with the form level input filter options. 

The main purpose of this is to allow specifiying a custom input filter type that has different behaviour to the default without having to create form specific validation and filtering rules within that class.
It is a BC break because the inheritance is changed, therefore any `instanceof` check on instances of `InputFilter` (checking for `AbstractStringAnnotation`) behave differently.