forms: Add new visibility property

This allows fields to specify a visibility constraint that will be evaluated
in real time in the browser to automatically show and hide fields that
should be hidden based on values of other fields in the same form.

Validation is not performed on fields server-side if they are considered
invisible when submitted.
forms: Add new 'regex' selection to validators

This allows administrators to define a regular expression to filter content
entered into short answer fields by agents and endusers. With the new
visibility feature, the regular expression input is only shown if the
regular expression validator is selected.
forms: Implement support for checkbox fields

Also fix crash if the [name] of a widget element started with a digit
character.
Add status properties to the status table.
Remove "resolved" state

This is necessary to avoid confusion vs. closed state.
Fix typo and use proper user function call
Add ListObject utility class

This will be useful for maintaining arbitrary list of items. ListObject
should be used in the place of ArrayObject
Add cascading propagation to field visibility

Hiding a field triggers visibility check on dependent fields
Use jQuery specific value getters
Add reopen settings for closed statuses.

This will allow administrator to indicate if end users are allowed to reopen
tickets in a particular closed status.
Enforce status settings on follow up messages

Consider current status settings to determine if a ticket is reopen-able
Show a warning on staff's ticket view if the ticket is not reopen-able
lint: Fix fatal error on lint test
Change thread body type to mediumtext
Add  Resolved status as clone of Closed status
Show dependent fields fast
Merge pull request #1291 from protich/feature/ticket-status-revisited

Ticket statuses revisited

Reviewed-By: Jared Hancock <jared@osticket.com>