function getAutoPlaceClosure(source) {

  var allConnected = getConnected(source);

  if (source.host) {
    allConnected = allConnected.concat(getConnected(source.host));
  }

  if (source.attachers) {
    allConnected = allConnected.concat(source.attachers.reduce(function(shapes, attacher) {
      return shapes.concat(getConnected(attacher));
    }, []));
  }

  return allConnected;
}
Returns all elements connected to given source.

This includes:

  - elements connected to source
  - elements connected to host if source is an attacher
  - elements connected to attachers if source is a host

@param {Shape} source

@return {Shape[]}