Tags system

Tags can be added to ANY javascript object (not necessarily reserved to BabylonJS) by calling BABYLON.Tags.AddTagsTo.
BABYLON.Tags.MatchesQuery can be used to check if a javascript object matches a "boolean" query:
   var myObject = {};
   BABYLON.Tags.AddTagsTo(myObject, "tag1 tag2");
   BABYLON.Tags.MatchesQuery(myObject, "tag1"); // => true
   BABYLON.Tags.MatchesQuery(myObject, "tag2"); // => true
   BABYLON.Tags.MatchesQuery(myObject, "tag3"); // => false
   BABYLON.Tags.MatchesQuery(myObject, "!tag3"); // => false
   BABYLON.Tags.MatchesQuery(myObject, "tag3 || tag1"); // => true
   BABYLON.Tags.MatchesQuery(myObject, "tag1 && tag2"); // => true
   BABYLON.Tags.MatchesQuery(myObject, "tag1 && !tag2"); // => false
   BABYLON.Tags.MatchesQuery(myObject, "(tag1 && !tag2) || !tag3"); // => true

   BABYLON.Tags.MatchesQuery(myObject, ""); // => true since it has at least one tag

   var myObject2 = {};

   BABYLON.Tags.MatchesQuery(myObject2, ""); // => false since it has no tag

   BABYLON.Tags.MatchesQuery(myObject, undefined); // => true
   BABYLON.Tags.MatchesQuery(myObject2, undefined); // => true

BABYLON.Tags.MatchesQuery doesn't use eval which is prohibited in win8

BABYLON.Scene.prototype.getMeshesByTags uses this system

This system uses AndOrNotEvaluator
Added forwarders methods on the object for which tags have been enabled.
Added BABYLON.Tags.DisableFor
Merge pull request #170 from gwenael-hagenmuller/tags

Tags system