orm: Improve Dept's use of ORM

The commit also renames some fields in department table.
Role-based Access

Introduce the concept of role-based access for agents.
roles : Implement role-based access system-wide
upgrade: Add upgrade/migration

Adds migration patch for role-based access
orm: Improve Dept's use of ORM

The commit also renames some fields in department table.
Make threads generic

Detach conversation thread from ticket to make it more generic. Any object
can now have its own thread complete with entry type and attachments.
Add centralized object model registry
Fix attachment fetching to be object based
Use generic attachment table

Use generic attachment table for all attachments system-wide.
Drop thread entry attachment table
Use criteria lookup to get thread entries
Make threads generic

Detach conversation thread from ticket to make it more generic. Any object
can now have its own thread complete with entry type and attachments.
Add centralized object model registry
Fix attachment fetching to be object based
Use generic attachment table

Use generic attachment table for all attachments system-wide.
Drop thread entry attachment table
Use criteria lookup to get thread entries
tabs: Make tabs more generic and dynamic
bug: Validate thread entry

Validate all fields with data even if it's for presentation only
forms: pass options to field render

Add support for complex options to support complex field rendering.
dialog: Support auto-resizing popup dialog

The size of the dialog can be auto-adjusted based on the options
tooltip: Add generic preview tool tip util

Generalize how we show object/data preview. The url to get the preview is
now based on data-preview attribute on the element in question.