interpolate user's global id in announcements

fixes ALYT-37

enable site admins to interpolate a Canvas user's
global ID in announcements using the string
{{CANVAS_USER_ID}}. This is similar in function to
what site admins can currently do with the account
domain (using {{ACCOUNT_DOMAIN}}).

Since there are only two possible substitutions, we
just gsub the notification message when displaying
it. If we continue adding more potential substitutions,
we will need to be smarter about how we handle such
overrides.

Test plan:
1) Create a new announcement on site admin, sending
to all users and using the string {{CANVAS_USER_ID}}
as part of the message text
2) Log in as two different users and verify that for
each, the appropriate user ID is used in place of
{{CANVAS_USER_ID}}
3) With sharding is enabled, it should be the global,
not the local ID, that is displayed.

Change-Id: Ia7d39f26d5916637cda133ceddc7fc615af83b9c
Reviewed-on: https://gerrit.instructure.com/36372
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <braden@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nick Nelson <nick@instructure.com>