_updateNodeFilters (filters) {
    let changed = false;
    each(this.nodes, (node) => {
      node.defaultFiltered = !node.hasDefaultVisibleConnections() || !every(filters.node, f => f.passes(node, f.defaultValue));
      const filtered = !node.focused && (!node.hasVisibleConnections() || !every(filters.node, f => f.passes(node, f.value)));
      if (node.filtered !== filtered) {
        node.filtered = filtered;
        changed = true;
      }
      if (!node.isVisible()) {
        each(node.incomingConnections, (c) => { c.filtered = true; });
        each(node.outgoingConnections, (c) => { c.filtered = true; });
      }
    });
    if (changed) { this._updateConnectionFilters(filters); }
  }
Update the node filters with the passed in filter configuration.
All nodes in this graph will be passed through the updated filters.
If any node filter status is changed, will also recursively call
_updateConnectionFilters(filters) to eliminate the any connections to
nowhere or orphaned nodes.

@param  {object} filters An object map of filters in the form of
                   { node: [], connection: [] }. Each respective array
                   containing filter configuration objects as described in
                   https://github.com/Netflix/Vizceral/wiki/Configuration#filters