feat(form): add `parent` parameter

Makes it possible to:
- disable the registration of a form in its parent form by specifying an empty or falsy value (preventing the propagation of validation, dirtiness and so on)
- specify a custom parent form (that is not necessarily the parent in the DOM) via an Angular expression that is evaluated in the current scope

If the parameter is not specified, the form directive will traverse up the DOM to locate a parent form as before this change, so current implementations will not break. This fixes issue #5858.