Execute and MultiExecute should return instance of queryFactoryResult
This will reduce the number of potential errors resulting from failing
queries and database connection issues. Existing code checking for EOF
will continue to function (just reporting no data available).

Changes were also made to queryFactoryResult to allow RecordCount to work
when the result is not cached and no mysqli resource exists. This should
allow existing Zen Cart core code utilizing "$result->RecordCount() > 0"
to operate (just reporting no data available).
Simplified processing loop for caching results.
Fixed a defect with the handling of RecordCount(): When the SQL query was
not a SELECT, SHOW, DESCRIBE or EXPLAIN query this causing an error instead
of correctly returning 0.
Merge remote-tracking branch 'fork/v160' into query-factory-always-return-result
Added phpdocs to queryFactoryResult and implemented the Iterator interface.
Fixed a bug with ExecuteMultiRandom introduced with the initial commit.
Cleaned up some code
Merge pull request #46 from lhungil/query-factory-always-return-result

ISSUE-95 - Query factory always return result
Merge remote-tracking branch 'fork/v160' into order-status-history-updatedby