Assert that SQL statements are prepared successfully in constructor
Assert that SQL statements are prepared successfully in constructor

The sqlite::Sql constructor calls Init() to prepare the statement, but
does nothing in the event of an initialization failure.  If the
statement preparation fails for any reason, this will leave the object
in the state of being uninitialized but with no stored query string
available for lazy initialization (i.e. with both statement_ and
query_string_ left as NULL).

A subsequent attempt to execute the statement will result in
LazyInit() attempting to lazily call Init() but hitting an assertion
failure on

  assert(NULL != query_string_);

This is confusing to debug, since it is not immediately clear how the
object has ended up in this state.

Fix by asserting that Init() returns success within the constructor,
thereby moving the assertion failure closer to the source of the
problem.

Signed-off-by: Michael Brown <2a36638259b3302298d1519e970c48ecd5dbd43e@fensystems.co.uk>

DrDaveD/cvmfs,DrDaveD/cvmfs,cvmfs/cvmfs,cvmfs/cvmfs,DrDaveD/cvmfs,cvmfs/cvmfs,cvmfs/cvmfs,DrDaveD/cvmfs,DrDaveD/cvmfs,DrDaveD/cvmfs,DrDaveD/cvmfs,cvmfs/cvmfs,cvmfs/cvmfs,cvmfs/cvmfs