* [Mail/Usability/Parser] Added a new 'defunct' checkbox field to address records.  A defunct email address is no longer a valid destination (e.g. it bounces, the person no longer works for the company, etc).  Defunct addresses will not be recommended when composing mail or auto completing email fields.  They will be tagged as 'defunct' on address worklists.  The defunct bit can be set with peek, bulk update, or Virtual Attendant behavior.  The field can also be filtered, searched, subtotaled, and added as a worklist column.  If you've been using a custom field to track defunct addresses you should bulk update those records to the new built-in field.

* [Virtual Attendants/Mail] Virtual Attendants can mark addresses as 'banned' from address actions.
* [Virtual Attendants/Plugins] Virtual Attendant condition and action plugins can now specify which events they bind to using the 'events' param for the extension in the plugin.xml manifest.  Each event entry can use '*' for wildcards, and if the param doesn't exist it will assume the extension should due added to every event.
[Code Cleanup/VA/Simulator] Added a DevblocksEventHelper::simulateActionSetAbstractField() helper to make it easier to create simulator output for abstract fields that conform to custom field types.
* [Internet Explorer/Usability] IE9+ will now be forced to not use compatibility mode.  This is controlled by a meta tag.
* [Mail/Parser] When the parser receives a bounced message that contains a 'message/delivery-status' attachment, it will add the original recipient to the bounce so you can merge it with the appropriate message in their history.  The parser will also check if the bounce is permanent (e.g. user not found).  If so, the recipient will automatically be marked as 'defunct'.  This saves a lot of data entry hassle.
* [Mail/Profiles/Usability] When a recipient is banned or defunct, it will now be clearly denoted with a tag next to their address on ticket profiles.  This will help identify the rare situations where a defunct contact is resurrected.
[Plugins] Set plugin baselines to minimum version 6.1
Readd the check for a min of 5 char in a comment
[Platform] Implemented page section extensions for the 'internal' controller.
[SDK] Updated the example plugin.xml
[Platform] Contexts now provide a 'dao_class' parameter in their manifest to enable abstract handling of model objects.
Implemented widgets for rendering arbitrary visualizations on workspace dashboards.

* [Workspaces/Widgets/Dashboards] Any worker can add widgets to their workspaces in order to visualize data. Initially, line charts, bar charts, gauges, and scatterplots are supported. New types of widgets can be added through plugins. This enables workers to build highly specific custom report elements without requiring any coding experience (everything is done through the web browser with familiar tools like worklists). Unlike competing projects that provide reporting templates, with Cerb you can chart quantitative data from any of your records (including those from plugins). You can even plot different kinds of records on the same chart.

* [Workspaces/Widgets/Dashboards] Implemented a reusable charting library that utilizes HTML5 Canvas. This allows efficient rendering of complex, ad-hoc graphics to be performed in client browsers.

* [Workspaces/Widgets/Dashboards] Implemented gauge widgets for workspace dashboards. A gauge displays a semi-circle with proportional zones in different colors. These zones can have arbitrary labels (e.g. OK, Warning, Critical). A needle points to the current value of the gauge. The data in a gauge can come from any worklist, any sensor, or it can be manually set. Gauges have countless uses, for example: you can display the current revenue for any time period and compare it against several milestones or goals; like a speedometer, a CPU Load or Disk Space gauge gives a visual indication of the current status on a scale of continuous values (e.g. 0-100%).

* [Workspaces/Widgets/Dashboards] Implemented chart widgets for workspace dashboards. Currently, this can display arbitrary data from worklists as line charts, bar charts, or scatterplots. Multiple worklists can be used to display several series on the same chart -- allowing comparison. Multiple series on a bar chart will display in 'stacked' format, presenting a lot of visual information in a compact space. Charts can plot quantitative and date-based data from any built-in or custom fields. You can also plot different kinds of data on the same chart (e.g. tickets vs. opportunities). For example: you can display a chart of outgoing responses with a series per worker; or you can create a 'resolution ratio' chart by using a stacked bar chart, and plotting the number of tickets created over time as one series, and the number of resolved tickets over time as a second series. This will display a number of progress-bars to visualize the percentage of resolved tickets for whatever date grouping you selected (e.g. hourly, daily, weekly, monthly, yearly).

* [Workspaces/Widgets/Dashboards] Widgets can be rearranged on a workspace dashboard by dragging them into one of three vertical columns. The order of your widgets will be saved automatically. In the near future we'll provide a way to specify how many columns you want to display on your dashboard. We're also exploring the ability to add widgets to worklist workspaces.
6.1-dev checkpoint
* [Search/Usability] A quick search will now reset the underlying worklist to the first page.
* [CHD-3021] [Virtual Attendants] The 'set reopen date' action on ticket-based events now works properly.
* [CHD-3033] [Mail/Usability] When forwarding a message, the tooltip on the 'To:' box will no longer refer to the recipients as receiving a copy of *all* future messages.
* [CHD-3026] [Virtual Attendants/Buckets] Added a context for buckets so the lazy loader will properly retrieve bucket data in ticket-related VA events.
* [CHD-3029] [Time Tracking] Fixed a FATAL PHP error when time tracking entries are created directly from a worklist rather than the timer.
* [CHD-2989] [UI/Usability] Selecting a new option in quick search no longer clears the text entry box.

Signed-off-by: Jeff Standen <jeff@webgroupmedia.com>
* [CHD-2982] [Time Tracking/Bulk Update] You can now bulk update the activity field on time tracking records.

Signed-off-by: Jeff Standen <jeff@webgroupmedia.com>