Dynamic data for osTicket

*This is a major redesign / rework of the osTicket base*

This patch drops the concept of static ticket metadata and allows for an admin-configurable arbitrary data that is attachable to tickets

The system is architected such that the base osTicket install now comes with a "default" form that has fields for subject, name, email, and phone number. This form is editable to allow for the addition of arbitrary other fields; however, the basic fields must remain in order to be associated with a help-topic and attached to a ticket.

This concept can be expanded to allow for arbitrary data associated with registered clients or ticket thread items.

Forms are comprised of sections. Sections have a title and instructions properties and a list of fields. Fields have various implementations to represent different data such as text, long answer, phone number, datetime, yes/no, and selections, and are configurable to define the look and feel and interpretation of the respective form field.

Dropdown lists are represented as "Dynamic Lists", which are admin-configurable lists of items. Dropdowns can be optionally represented as Bootstrap typeahead fields.

This also adds the start of a simple ORM which will hopefully be expanded in the future to support multiple database platforms. Currently, only MySQL is implemented.

Known Outstanding Issues (last mile):
  - ~~Delete support for big dynamic items (list, form)~~
  - ~~Email integration -- allow submission without required fields not represented in MIME~~
  - Upgrade testing
  - ~~PDF layout fixes~~
  - Icons for the admin interface menu for dynamic forms
  - Documentation
  - ~~Private data may leak on email from email templates~~

Extra features TODO:
  - Custom regex validator for the text field
  - Implement custom error message for text field