Added support for [Optional] and [Without] metatags for Node components definition.

[Optional] — defines that all entities with or without the component will match this family definition if other conditions are fulfilled. If node entity do not contains optional component, the node variable is set to null. When an entity obtain the optional component variable is set with it reference. Adding or removing optional component will not affect this family's NodeList.

[Without] — defines that an entity should not contain the component to match this Node family. The Node variable with [Without] metatag always set to null. When an entity in the family obtain such component it becomes unsuitable for this family and will be removed from the family's NodeList.

[Without] have priority over [Optional] metatag.