Added attachment notifications for tickets; a 'default domain' resolver (always append @domain), and the ability for users to join any number of 'groups' defined as admin and if said groups are CC'd to (by @<groupname>) everyone in said group gets the notice.

Got everything rough draft working. We now add a macro call to the ticket description to display the estimate. I make a ticket change to record the comment, but it is coming up as html instead of rendering

The macro used the first version warning style (req.warning()), but that was just a left-over from before moving to redirect on successful submit anyway - it would not have displayed to the user no matter what. The line is just removed. Fixes #2368.

The whole req.redirect() idea needed to be reworked as macros cannot really do redirects. A redirect raises RequestDone, and like all other exceptions from macros it gets swallowed by the Formatter - causing an AssertionError to appear in the logs when the request tries to write a second status/header/response output later.

The exception did not display to the user, but was annoying... Now the redirect sets a marker on the req object, and by implementing IRequestFilter it now re-raises the RequestDone there.