Adds to Melange a tags framework based on taggable-mixin.
The taggable-mixin allowed only tag per Datastore model. This is extended
framework allows any arbitrary number of tags per Datastore model. Also,
now one can define different models for different Tag types which are all
inherited from the base Tag model provided by taggable-mixin.
The GHOPTask model makes use of 2 tags per model, one for difficulty and the
other for task_type, both using the tags framework.
Reviewed by: Paweł Sołyga
Third-party code that is *not* part of the application image (the Google App
Engine SDK in trunk/thirdparty/google_appengine, for example) belongs in
trunk/thirdparty. For third-party code that *is* part of the application
image, see the notes in trunk/app/README.
== THIRD PARTY LICENSES ==
Third-party code must also include a license text file, named LICENSE or
COPYING, in the package subdirectory. If the third-party package subdirectory
is maintained automatically with a tool such as svn_load_dirs.pl (which
removes files, such as license text files, that were added later to the
"target" directory), place the license text file in the trunk/app directory
and add the package name as a suffix.