Refactor Data Persistence Layer

Refactored the data persistence layer for the following goals:

* Switch from mysql to mysqli
* Optimize performance
* Use modern php features like namespaces, interfaces, and autoloading
* Leverage event system for caching
* Maintain backwards compatibility

Interfaces allow consistent and reliable behavior with flexible implementations.  The `ZenCart\Database\ConnectionInterface` opens the door for `PDO` and `ORM` persistence options.  Caching can now be easily extended out of simple query caching into other use-cases (such as views).  Unit tests are provided to validate expected behavior.