New class in database library: EmptyDatabaseResult

Represents an empty result for databases libraries not returning
an iterator on exec queries.

Invoke:
$result = new EmptyDatabaseResult();

$result->numRows() will always return 0.
$result->fetchRow() will always return null.
Iterator won't behave like an empty array.
Database engine: fixes for MySQLCollection

MySQLCollection requires some tweaks to be able:

- to load an instance of the current database without context
- to retrieve a result as an associative array, without numeric keys

Improving code documentation.
Fixing typo in code documentation: repreesnts → represents
Collection: Adding SQL collection engines

[ Feature description ]

Commit c82badf02f46da45ffd09f9b3ea7d0891251e079 has introduced
collection engine, to store JSON documents with CRUD capabilities.

We recommend a document-based engine like MongoDB to store them, but
we also want to avoid to force MongoDB installation, and filesystem
doesn't offer any concurrency warranty.

So we here provide collection engines for MySQL and SQLite.
They don't use any relational database capaibilities and store
directly the JSON document in a blob field, instead to create a
table by collection, with the appropriate fields.

If you wish to implement a totallly relational database storage
engine, please note we allow documents of a collection to be diffreents,
ie there is no warranty of fields consistency from one to another.

[ New abstract storage class: SqlCollection ]

It contains CRUD very basic SQL requests, compatible with every SQL
database, so you can easily add a class for your own database product.

[ New storage engine: MySQLCollection ]

Reuses the existing Database implementation.

Tailtored to work if the database engine selected is MySQL.

[ New storage engine: SQLiteCollection ]

Uses an arbitrary SQLite3 file.

[ Unit testing ]

* Full unit testing coverage for SQLiteCollection
* Full unit testing coverage for MySQLCollection