Adds per-dataset test tagging support

 * Moves tag- and attr- setting logic out of tag decorator
   into the _add_tags() and _add_attrs() methods.
 * Fixes bug in tag-adding logic that was causing duplicate
   tags to get saved.
 * Adds methods for applying and manipulating test tags
   on datasets inside dataset lists:
     apply_test_tags(), dataset_names(), dataset_name_map(),
     and merge_dataset_tags()
 * Makes DataDrivenFixture decorator aware of dataset-applied
   test tags so that they don't override tag-decorator applied
   test tags.

Change-Id: I79592e2ea10a87a00fc05ee4ada059d7e9b83ef7