Generalize error() to all engines
Summary:
Even if we throw exceptions, error handling of legacy code
is still calling $db->error() in MySQL context to read
errno/error messages.
While those fields are populated in the exception as context,
it makes sense to expose this method at base abstraction level,
so code migrating to use keruald/database can keep its current
error handling.
Blackhole pure and mock implementations returns an empty array.
Test Plan: Use in Obsidian workspaces/src/includes/error.php
Differential Revision: https://devcentral.nasqueron.org/D3784