Api consistency between acquire and release

Makes the API between `acquire` and `release` a bit more consistent (both accepting callbacks), adding an optional callback for release, notifying the callback if it has been called multiple times for the same connection.