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