[Platform/VAs/Variables] Fixed an issue with behavior variables that had dots and other printable non-alphanum characters in their names.
[Devblocks/Twig/Platform] Updated Twig dependency from 1.5.1 to 1.7.0-dev (GitHub fork).
* [Twig/Devblocks] Modified Twig to support a 'registerUndefinedVariableCallback' feature.  This allows third-party code to lazy-load dynamic placeholder variables.
* [Performance/Snippets/Virtual Attendants] Implemented 'lazy loading' for placeholders in snippets and Virtual Attendant behavior.  Previously we used 'eager loading', where values for all the possible placeholders were preloaded even if they weren't used.  This inefficiently utilized server resources (cycles, memory, queries).  Now, for example, if you don't need the watchers or custom fields on a ticket then they won't be retrieved.  Once values are loaded in VA behavior, they can be reused by future conditions and actions without any additional lookups.  The lazy loader is also capable of cascading lookups; for instance, if you request the custom fields of an email address's organization prior to using information about the email address, the system will load the intermediate objects.  Another positive consequence of this change is that we can make more information available as placeholders since the performance impact should be minimal.

[Performance/Platform/Lazy Loading] Implemented lazy loading for the following contexts: address, comment, feedback, kb article, opp, org, person, group, message, notification, snippet, task, ticket, time tracking, worker, worker role, and SDK
* [Snippets/Usability/Plugins] Implemented 'bytes_pretty' and 'date_pretty' (15GB) filters for placeholders.  The former converts a timestamp to human-friendly strings like '4 days ago', and the latter converts a number of bytes to a KB/MB/GB/TB/PB representation with the specified decimal precision.
* [Virtual Attendants/Variables/Performance] Used the new lazy loading feature to improve the performance of list-based behavior variables in Virtual Attendants.  The objects in list-based variables are now batch loaded efficiently.

* [Virtual Attendants/Variables/Development/Usability] List-based behavior variables in Virtual Attendants can now be iterated in snippets using the "{% for object in objects %}" syntax of Twig.  You can also perform array-based filters on them, like '|length' and '|keys'.

* [Virtual Attendants/Simulator/Variables/Usability] When using the Virtual Attendant simulator to test behavior, setting a list variable will now tell you all the available snippet placeholders that you can use in a loop.

[Code Cleanup] Refactored Context_Ticket to load using Model_Ticket rather than a search results array.  Only one in seven callers used a search.
[Code Cleanup] Moved Devblocks_EventHelper to its own class since it's nearly 2000 LOC.
[Code Cleanup/Performance] Improved the performance of Context_Notification by using the cached URL rather than dynamically generating it.  This required extra 1:n queries to pull up the linked context.
* [Virtual Attendants/Variables/Notifications] Notification worklists can now be managed by Virtual Attendants.  For example, your VA can send you an hourly email report of your unread notifications.
* [Virtual Attendants/Behavior/Groups] Virtual Attendants can now manage worklists about groups and save the results to list-based variables for use in conditions and actions.
5.8.0-dev checkpoint
Merge branch '5.8' into 5.8_fix