fix blob type

The previous implementation broke the equals operator for SqlValue case
classes. Arrays get compared by object while Seqs get compared
elementwise. Before this change, the following could occur

val x = SqlBlob("foo".getBytes)
val y = SqlBlob("foo".getBytes)
x == y -> false

Now since each byte in the sequence gets compared, the x == y comparison
returns true (scala implicitly converts Array[Byte] to Seq[Byte] in the
SqlBlob constructor).

Since toBlob now returns a Seq, rather than an Array[Byte],
it may be necessary to make replacements like

val x = row(0).toBlob =>
val x = row(0).toBlob.toArray

but generally only if one needs to call a Java function that takes a
byte[] argument.
SqliteDb.scala -- fix spacing in error message
Sqlite3C.cc: bind blobs as text

It turns out that using sqlite3_bind_blob to insert a column into an
Sqlite database causes the Sqlite vdb to treat the column as a blob
column. This is generally not desirable because it won't properly handle
string comparisons of text columns. As an example, the following code
won't work as expected:

scala> val db = new SqliteDb(":memory")
db: org.srhea.scalaqlite.SqliteDb = org.srhea.scalaqlite.SqliteDb@126828b
scala> db.execute("CREATE TEMP TABLE foo (i INT, t TEXT)")
scala> db.prepare("INSERT INTO foo (i, t) VALUES (0, ?1)") { stmt =>
         stmt.execute(SqlBlob("bar".map(_.toByte)))
       }
scala> db.foreachRow("SELECT * FROM foo")(println)
Vector(0, bar)
scala> db.foreachRow("SELECT COUNT(*) FROM foo WHERE t = 'bar'")(println)
Vector(0)

With libscalaqlite built with this change, the last query returns
Vector(1) as expected.

Note that it is still possible to get the SqliteDb to interpret the
result of an insert as a blob. It now just requires that a blob literal
is used:
db.execute("INSERT INTO foo (i, t) VALUES (1, X'626172')")
db.foreachRow("SELECT * FROM foo")(println)
Vector(0, bar)
Vector(1, bar)
db.foreachRow("SELECT COUNT(*) FROM foo WHERE t = 'bar'")(println)
Vector(1)
SqliteDbSpec.scala: add test for binding SqlBlobs

This test makes sure that a blob column that is inserted as a bound
parameter is interpreted by Sqlite as a text column if it is composed of
printable characters.
prepare: throw exception instead of assertion

There are cases where you may want to be able to recover from a failure
to prepare a statement. As an example, the prepare may fail because it
uses a foreign data table that Sqlite is currently unaware of. By
throwing an exception, it is possible to recover from the failure,
update the db and retry.

Reviewed-by: srhea@meraki.com