CHANGE-709 - Refactor logging infrastructure (continuation)

CHANGE-709 - Refactor logging infrastructure (continuation from earlier changes)
- fix chicken/egg problem with log initialization
- add explicit logging messages in more places
- relocate log-delete code to logwriter

Signed-off-by: DrByte <drbyte@zen-cart.com>
Add additional detail to help in interpretation of log data
Add test suite
Add vfsStream dependency to composer.json
Always good to actually add the test case :)
Merge branch 'v160' into upd_admin_logging

Resolved Conflict:
	admin/includes/languages/english.php
Collaborating on mocks
Merge branch 'v160' into upd_admin_logging
Merge branch 'upd_admin_logging' into db-mocking-for-logging
Refactor to share common methods dbPrepareLogData and $db->prepare
remove mocked zen_db_perform - no longer needed
Refactoring just for test-ability
Simple cloning to set up functional db testing
Connect to db and run tests
Restore other test suites
Reset for habitat environment
Merge commit 'adc8e4d1bc8dbbf71fc3b99d237a239d1665f3dc' into upd_admin_logging

Conflicts:
	composer.json
Remove redundancy from constructor signatures
Refactoring tests to allow for private methods to be tested vicariously
Fixes #206 - bug with random result selection
The problem here was that originally the queryFactoryResult->Move method did a mysql_data_seek to reset the pointer after reading in the result->fields. This was shown to break the Iterator rewind, so was removed. However ExecuteRandomMulti was relying on that pointer reset.
However executeRandomMulti doesn't even need to call Move, as it builds it own result->fields, we can therefore just replace the call to move with a mysqli_data_seek