Tagging API

The initial ideas for this are based on those proposed by nedjo on http://groups.drupal.org/node/100179. The tagging API would consist of a single controlling module, which would then allow two types of modules to extend it:
 * Tag suggestion modules which are purely backend modules and suggest tags that are associated with an entity/piece of text.
 * UI modules which implement widgets for interfacing with tag suggestions.