PostgreSQL, Use prepared statements for queries with and without binds, based
on the usage count of the given SQL string.

This introduces a second StatementPool, which is filled with all new queries.
Any query that is used twice is moved to the prepared statement pool.

Prepared statements are created and deallocated as a concurrent query that is
sent after the second query run and processing is finished at the start of the
next query.

When the pool limit for new or prepared queries is reached, then queries are
removed in LRU order.