Refactor Data Persistence Layer

Refactored the data persistence layer for the following goals:

- [x] Switch from mysql to mysqli
- [x] Optimize performance
- [x] Use modern php features like namespaces, interfaces, and autoloading
- [x] Leverage event system for caching

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.