Federate configuration settings

Change the config table from a column-based table to a key-value table
with namespacing. This allows several parts of osTicket to store their
respective configurations in the same table without requiring database
structure updates

'namespace' is reserved in PHP
Use an abstract Config class and auto-created records
Drop OstConfig::updateAttachmentsSettings(), ::allowSMTPSpoofing()

Attachment settings were merged into ticket settings
SMTPSpoofing feature was moved to per-email rather than global
Add persistence configuration

Allow (a subset of) the configuration to also be saved in the session to
make session-backed data more consistent and compatible with up-and-coming
multi-site setups.
Various bug-fixes for the upgrader

- timezone_offset was dropped from the config table at 1.7-dpr1
- upgrader: only apply five patches in one request
- upgrader: fix readPatchInfo to work correctly
- session: support migrating from 1.6 (again)
- config: support migrating from 1.6 (fallback)
- config: no default for 'isonline' setting
- config: fix SQL whitespace issue for schema signature fallbacks
- config: hash 1.6 versions in the schema signature lookup
- upgrader: fix logging bug in attachment migration
Merge pull request #564 from greezybacon/feature/federated-config

Federate configuration settings

Reviewed-By: Peter Rotich <peter@osticket.com>