### Summary

When adding content to a file using `blockinfile`, it is hard to prepend/append a blank line to the block.

e.g. this would be the result when using EOF:
````ini
# network settings
foo = bar
baz = qux
# BEGIN ANSIBLE MANAGED BLOCK
something = 123
# END ANSIBLE MANAGED BLOCK
````

That's hard to use. This would be better (and conventional):
````ini
# network settings
foo = bar
baz = qux

# BEGIN ANSIBLE MANAGED BLOCK
something = 123
# END ANSIBLE MANAGED BLOCK
````

That blank space is so important. Without it the file becomes unreadable, especially when there are multiple blocks, or the blocks are interspersed throughout the file (not BOF or EOF).

There are many related questions on SO about this. For example, [here's one with 12k views](https://stackoverflow.com/q/64687350/9971404).

The only way to do this idempotently is to use two tasks, one for the blank line and one for the block. And it's nasty.

Please consider adding a new option to `blockinfile` to allow prepending/appending blank lines?

### Issue Type

Feature Idea

### Component Name

blockinfile

### Additional Information

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)

```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
required: yes
    aliases: [ dest, destfile, name ]
  state:
    description:
    - Whether the block should be there or not.
    type: str
    choices: [ absent, present ]
    default: present
  marker:
    description:
    - The marker line template.
    - C({mark}) will be replaced with the values in O(marker_begin) (default="BEGIN") and O(marker_end) (default="END").
    - Using a custom marker without the C({mark}) variable may result in the block being repeatedly inserted on subsequent playbook runs.
    - Multi-line markers are not supported and will result in the block being repeatedly inserted on subsequent playbook runs.
    - A newline is automatically appended by the module to O(marker_begin) and O(marker_end).
    type: str
    default: '# {mark} ANSIBLE MANAGED BLOCK'
  block:
    description:
    - The text to insert inside the marker lines.
    - If it is missing or an empty string, the block will be removed as if O(state) were specified to V(absent).
    type: str
    default: ''
    aliases: [ content ]
  insertafter:
    description:
    - If specified and no begin/ending O(marker) lines are found, the block will be inserted after the last match of specified regular expression.
    - A special value is available; V(EOF) for inserting the block at the end of the file.
    - If specified regular expression has no matches, V(EOF) will be used instead.
    - The presence of the multiline flag (?m) in the regular expression controls whether the match is done line by line or with multiple lines.