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.
Implement role-based access
orm: Convert agents listing to be ORM based
Rename getRole to getUserType
roles : Implement role-based access system-wide
oops: Fixes
upgrade: Add upgrade/migration

Adds migration patch for role-based access
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