Introduce elysium_buffering_strategy behaviour

The behaviour allows for switching between serial and parallel buffering strategies via the configuration.

Other features added:
  - No random delay when restarting a child connection after decay
  - Added elysium_connection:one_shot_query/4
The external API is with_connection/1, checkout_connection/1 and checkin_connection/1. I want the config to be consistently enforced (especially since there are 2 config methods now) and I don't want the caller to have to know how to get the right info. All external calls should be to elysium_buffering_strategy module and dispatch via configuration changes, rather than knowing implementation and calling in at a lower level.