Support for tags in code snippet API; tag namespaces; donation total per tag

* code_snippet API call accepts a 'tags' parameter
 * tags get included in the code snippet
 * we protect against Bobby Tables by whitelisting allowed characters in tags
* tags are organized into "namespaces", e.g. the tag "petition:123" is in tag namespace "petition"
 * later we can use this to report e.g. the top raising petitions
* we keep a running total (in redis) of how much has been raised in each tag.  this total is in the organization's preferred currency.
knowledge of what's a valid tag format could live in the tag class, also