Fix prepared statement leak #2

Fix for #158.

Unlike in the previous attempt (#298), this implementation does not attempt to handle finalization of prepared commands, only explicit Dispose()/using patterns. This avoids many concurrency issues and is much simpler/safer, at least for now.